REST API:JAX-RS與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之間的主要區別。