Рубрики
Без рубрики

REST API: JAX-RS vs Spring

Автор оригинала: baeldung.

1. Обзор

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

2. Веб-сервисы Jakarta 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();
    }

}

Выше конечная точка возвращает простой ответ “текст/обычный” в виде аннотации @Производит состояния. В частности, мы предоставляем HTTP-ресурс hello , который принимает параметр с именем name с двумя аннотациями @Path|/. Нам также нужно указать, что это запрос GET , используя аннотацию @GET .

3. ОТДЫХ С Пружинным MVC

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

Давайте сделаем эквивалентный пример GET request, как описано выше, используя 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 и возвращает ответ “text/plain”.

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 .