REST API:JAX-RS與Spring
- Spring
- Rest Api
- Spring
1.概述
在本教程中,我們將看到JAX-RS和用於REST API開發的Spring MVC之間的區別。
2. Jakarta RESTful Web服務
要成為JAVA EE世界的一部分,功能必須具有規範,兼容的實現和TCK 。因此, JAX-RS**是用於構建REST服務的一組規範。它最著名的參考實現是RESTEasy和Jersey** 。
現在,讓我們通過實現一個簡單的控制器來熟悉Jersey:
@Path("/hello")
public class HelloController {
@GET
@Path("/{name}")
@Produces(MediaType.TEXT_PLAIN)
public Response hello(@PathParam("name") String name) {
return Response.ok("Hello, " + name).build();
}
}
在上方,端點返回一個簡單的“文本/純文本”響應,作為註釋@Produces
狀態。特別是,我們公開了一個hello
HTTP資源,該資源接受帶有兩個@Path
批註的name
我們還需要使用註釋@GET
來指定它是一個GET
請求。
3.帶有Spring MVC的REST
Spring MVC是Spring Framework的模塊,用於創建Web應用程序。它為REST框架添加了REST功能。
讓我們使用Spring MVC製作與上述相同的GET
@RestController
@RequestMapping("/hello")
public class HelloController {
@GetMapping(value = "/{name}", produces = MediaType.TEXT_PLAIN_VALUE)
public ResponseEntity<?> hello(@PathVariable String name) {
return new ResponseEntity<>("Hello, " + name, HttpStatus.OK);
}
}
通過查看代碼,@ @RequestMapping
指出我們正在處理一個hello
HTTP資源。特別是,通過@GetMapping
批註,我們將其指定為GET
請求。它接受名為name
的參數,並返回“文本/純文本”響應。
4.差異
JAX-RS依賴於提供一組Java註釋並將其應用於純Java對象。的確,這些註釋有助於我們抽像出客戶端與服務器之間通信的底層細節。為了簡化其實現,它提供了註釋來處理HTTP請求和響應,並將其綁定到代碼中。 JAX-RS只是一個規範,它需要使用兼容的實現。
另一方面, Spring MVC**是具有REST功能的完整框架**。像JAX-RS一樣,它也為我們提供了有用的註釋,以從底層細節中抽像出來。它的主要優勢是成為Spring Framework生態系統的一部分。因此,它允許我們像其他任何Spring模塊一樣使用依賴注入。此外,它可輕鬆與Spring AOP,Spring Data REST和Spring Security等其他組件集成。
5.結論
在這篇快速文章中,我們研究了JAX-RS和Spring MVC之間的主要區別。