在常见的 Spring 和 Angular 应用程序的上下文中,什么是 API?

In the context of a common Spring and Angular application, what is the API?

API 上有大量可用信息。 Guru99 上面有一个 good page。不过,可用的信息非常笼统。我不确定它如何适用于我熟悉的工作。我的工作是我通常使用 Spring 和 Angular.

开发 Web 应用程序

在此上下文中,API 是什么?它是用户输入文本并单击按钮的用户界面吗?是 Spring DispatcherServlet 处理来自前端的传入请求并将它们定向到正确的后端 Spring 控制器方法吗?是 Spring 控制器本身吗?前端服务类中的API是将请求发回后端吗?这些服务 类 将包含使用 rxjs Observables 的方法,如下所示。

Angular

getCards(): Observable<Card[]> {
  return this.http.get<Card[]>(this.baseUrl+'cards')
  .pipe(catchError(this.handleError<Card[]>('getCards', [])));
}

虽然后端控制器方法看起来像这样:

Spring

@RestController
@RequestMapping("cards")
@AllArgsConstructor(onConstructor = @__(@Autowired))
public class CardControl {
    private final CardService cardService;

    @GetMapping
    public ResponseEntity<List<Card>> getCards(){
        List<Card> cards = cardService.findAll();
        return new ResponseEntity<>(cards, HttpStatus.OK);
    }
}

如果我要对这样的应用程序进行 API 测试,我究竟要测试什么?此测试会发生在后端、前端还是两者?

通常,当我们谈论 API 时(在 Web 应用程序的上下文中),我们通常谈论后端。所以在你的情况下,它将是你的 spring 控制器:

@RestController
@RequestMapping("cards")
@AllArgsConstructor(onConstructor = @__(@Autowired))
public class CardControl {
    private final CardService cardService;

    @GetMapping
    public ResponseEntity<List<Card>> getCards(){
        List<Card> cards = cardService.findAll();
        return new ResponseEntity<>(cards, HttpStatus.OK);
    }
}

因此,如果您要进行 API 测试,您将向后端发送 GET [URL]/cards 请求并确保它 returns 符合您的期望。

有几个工具可用于 API 在您的上下文中进行测试。

  • Postman 是一个很好的 UI,您可以在其中轻松定义请求和测试。
  • Rest assured 是一个 Java 库,允许您在 Java.
  • 中发送和测试请求