Перейти к основному содержимому

REST API: JAX-RS против Spring

· 2 мин. чтения

1. Обзор

В этом руководстве мы увидим разницу между JAX-RS и Spring MVC для разработки REST API.

2. Веб-сервисы RESTful в Джакарте

Чтобы стать частью мира JAVA EE , функция должна иметь спецификацию, совместимую реализацию и TCK . Соответственно, JAX-RS — это набор спецификаций для построения REST-сервисов . Наиболее известными эталонными реализациями являются RESTEasy и 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();
}

}

Выше конечная точка возвращает простой ответ «text/plain», как указано в аннотации @Produces . В частности, мы предоставляем HTTP- ресурс hello , который принимает параметр name с двумя аннотациями @Path . Нам также нужно указать, что это запрос GET , используя аннотацию @GET .

3. ОТДЫХ С Spring MVC

Spring MVC — это модуль Spring Framework для создания веб-приложений. Он добавляет возможности REST в Spring Framework.

Давайте сделаем эквивалентный пример запроса GET , как указано выше, используя Spring MVC:

@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.

Как обычно, исходный код этой статьи доступен на GitHub .