복붙노트

[SPRING] Spring HATEOAS 대 Spring 데이터 Rest

SPRING

Spring HATEOAS 대 Spring 데이터 Rest

질문 : Spring HATEOAS와 Spring Data Rest의 차이점은 무엇입니까?

나는 둘 다 똑같이 할 수 있다고 느낀다. Spring Data Rest (Spring Data Rest)는 좀 더 살아있는 것처럼 보인다.

https://github.com/spring-projects/spring-hateoas https://github.com/spring-projects/spring-data-rest

언제 다른 것을 사용 하시겠습니까?

해결법

  1. ==============================

    1.Spring HATEOAS는 일반적으로 Spring MVC로 하이퍼 미디어 중심의 REST API를 만드는 것을 용이하게하기 위해 일반적인 추상화 (대표 모델, Link 클래스, Spring MVC 컨트롤러를 가리키는 링크를 만드는 API 등)를 제공한다. 따라서 스프링 MVC와 함께 사용하면 수동으로 해당 서비스를 빌드 할 수 있습니다.

    Spring HATEOAS는 일반적으로 Spring MVC로 하이퍼 미디어 중심의 REST API를 만드는 것을 용이하게하기 위해 일반적인 추상화 (대표 모델, Link 클래스, Spring MVC 컨트롤러를 가리키는 링크를 만드는 API 등)를 제공한다. 따라서 스프링 MVC와 함께 사용하면 수동으로 해당 서비스를 빌드 할 수 있습니다.

    Spring 데이터 REST는 Spring HATEOAS를 사용하여 Spring 데이터 저장소가 관리하는 엔티티에 대한 리소스를 자동으로 노출하고 하이퍼 미디어 측면을 활용하여 페이지 매김, 링크 엔티티 등을 수행하므로 기본 구성 요소의 80 % 사용 사례를 다루며보다 복잡한 프로세스를 선택적으로 추가 할 수 있습니다 나중에 수동으로 구현 된 컨트롤러를 사용합니다.

    이에 대한 느낌을 가지려면 Spring RESTBucks 샘플 프로젝트를 자유롭게 살펴보십시오. Order 인스턴스 처리는 Spring Data REST (비즈니스 제약 조건을 구현하기위한 약간의 조정 포함)에 의해 완전히 수행됩니다. 주문을 완료하기 위해 실제로 특정 단계와 프로토콜을 구현해야하므로 프로세스가 CRUD 범주에 속하지 않으므로 전체 지불 논리가 수동으로 구현됩니다. 다시 말하지만 코드는 여기에 있습니다. 일부 추가 비주얼을 포함한 슬라이드 데크는 speakerdeck.com에서 찾을 수 있습니다.

  2. ==============================

    2.HATEOAS는 응용 프로그램 상태의 엔진 인 Hypermedia를 의미하며 REST의 주요 포니 중 하나입니다. 기본적으로 핵심 포인트는 응용 프로그램 상태의 유효한 전환을 매핑하기 위해 리소스 표현에 대한 링크를 사용하는 것입니다. 이 경우 링크를 통해 도달 할 수있는 올바른 애플리케이션 상태를 제공하는 서비스 제공 업체가됩니다. Spring HATEOAS는 리소스에서 Hymeridia Controls를 빌드하는 데 도움이되는 Spring 프로젝트입니다. 이 프로젝트는 Spring MVC와 통합되어 있으며 실제 RESTFull WS 빌드를위한 Spring MVC 확장이라고 생각하면 서비스 양식 CRUD (Richardson 모델의 성숙도 레벨 2) 수준을 하이퍼 미디어 인식 (Richardson 모델의 성숙도 3 단계). Spring Data Rest는 다른 HOWTO를 Spring HATEOAS를 기본 벽돌로 사용하는 매우 훌륭한 프로젝트이다. 이 프로젝트는 당신의 저장소 계층을 잔잔한 엔드 포인트로 드러내 기 위해 고전적인 코드를 줄이는 데 도움이됩니다. 우리는 tat가 매우 다른 프로젝트의 프로 우스 터라고 말할 수 있습니다. Spring HATEOAS를 사용하면 어떤 종류의 restfull endpoint에도 사용할 수있는 프레임 워크를 가질 수 있습니다. 스프링 데이터 나머지는 이미 엔드 포인트와 사용자 정의를위한 프레임 워크를 제공하는 스프링 프로젝트입니다.

    HATEOAS는 응용 프로그램 상태의 엔진 인 Hypermedia를 의미하며 REST의 주요 포니 중 하나입니다. 기본적으로 핵심 포인트는 응용 프로그램 상태의 유효한 전환을 매핑하기 위해 리소스 표현에 대한 링크를 사용하는 것입니다. 이 경우 링크를 통해 도달 할 수있는 올바른 애플리케이션 상태를 제공하는 서비스 제공 업체가됩니다. Spring HATEOAS는 리소스에서 Hymeridia Controls를 빌드하는 데 도움이되는 Spring 프로젝트입니다. 이 프로젝트는 Spring MVC와 통합되어 있으며 실제 RESTFull WS 빌드를위한 Spring MVC 확장이라고 생각하면 서비스 양식 CRUD (Richardson 모델의 성숙도 레벨 2) 수준을 하이퍼 미디어 인식 (Richardson 모델의 성숙도 3 단계). Spring Data Rest는 다른 HOWTO를 Spring HATEOAS를 기본 벽돌로 사용하는 매우 훌륭한 프로젝트이다. 이 프로젝트는 당신의 저장소 계층을 잔잔한 엔드 포인트로 드러내 기 위해 고전적인 코드를 줄이는 데 도움이됩니다. 우리는 tat가 매우 다른 프로젝트의 프로 우스 터라고 말할 수 있습니다. Spring HATEOAS를 사용하면 어떤 종류의 restfull endpoint에도 사용할 수있는 프레임 워크를 가질 수 있습니다. 스프링 데이터 나머지는 이미 엔드 포인트와 사용자 정의를위한 프레임 워크를 제공하는 스프링 프로젝트입니다.

    이 반향이 두 프로젝트의 차이점을 명확히하고 더 잘 이해하는 데 도움이되기를 바랍니다.

  3. ==============================

    3.내 프로젝트에서 두 가지를 모두 사용하기로 결정했습니다. 컨트롤러의 한 계층은 Spring Data REST로 구축되었습니다. 컨트롤러의 다른 레이어는 @ RestController 's (spring-wevmvc)입니다. 이 계층에서 저는 Spring HATOAS를 사용하여 customed page를 만들었습니다. (프로세스 : 1. Pageable Pageable 페이지 작성 = 새 PageRequest 2. 새로운 페이지 페이지 생성하기 page = 새로운 PageImpl 3. PagedResources 생성 PagedResources > resource = fooAssembler.toResource (page, fooAssembler)는 Jackson의 ObjectMapper를 사용하여 json을 반환합니다.

    내 프로젝트에서 두 가지를 모두 사용하기로 결정했습니다. 컨트롤러의 한 계층은 Spring Data REST로 구축되었습니다. 컨트롤러의 다른 레이어는 @ RestController 's (spring-wevmvc)입니다. 이 계층에서 저는 Spring HATOAS를 사용하여 customed page를 만들었습니다. (프로세스 : 1. Pageable Pageable 페이지 작성 = 새 PageRequest 2. 새로운 페이지 페이지 생성하기 page = 새로운 PageImpl 3. PagedResources 생성 PagedResources > resource = fooAssembler.toResource (page, fooAssembler)는 Jackson의 ObjectMapper를 사용하여 json을 반환합니다.

    두 기술의 컨텍스트에 로딩 할 때 찾은 솔루션은 두 개의 DispatcherServlet을 사용하고 있습니다. 그렇지 않으면 Spring Data Rest가 제어되고 다른 컨트롤러를 사용할 옵션이 없습니다. (그런 식으로 내 애플 리케이션에 두 개의 도메인이 있는데 하나는 데이터 쉬트이고 다른 하나는 webmvc + HATEOS).

  4. from https://stackoverflow.com/questions/19514131/spring-hateoas-versus-spring-data-rest by cc-by-sa and MIT license