ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] Level3 REST API 구현을 위한 HATEOAS 적용
    WEB/Spring 2020. 7. 5. 01:27

    HATEOAS(Hypermedia As the Engine Of Application State)

    현재 사용하고 있는 Restful에 리소스와 연관된(호출 가능한) 자원 상태 정보를 제공

     

    REST 아키텍처 레벨

     

    Level 0 : The Swamp of POX (원격 프로시저 호출)

    일반 XML 데이터를 SOAP이나 XML-RPC 등으로 전송한다. POST 메소드만 사용하며, 서비스간에 단일 POST 메소드로 XML 데이터를 교환한다. 초창기 SOA 애플리케이션 제작 시 흔히 사용된 방식이다.

     

    Level 1 : Resources (Rest 리소스)

    함수에 파라미터를 넘기는 대신 REST URI를 이용한다. 레벨 0처럼 POST 메소드 하나밖에 사용하지 않지만, POST 메소드로 서비스간 통신을 하면서 복잡한 기능을 여러 리소스로 분산시킨다는 점에서 한 단계 발전된 형태라고 볼 수 있다.

     

    Level 2 : HTTP Verbs (추가 HTTP 메소드)

    레벨2는 POST 이외에 GET, HEAD, DELETE, PUT 메소드를 추가적으로 사용한다. HTTP 요청시 여러 메소드를 사용하여 다양한 리소스를 제공할 수 있다는 점에서 REST의 진정한 유스 케이스라 할 수 있다.

     

    Level 3 : Hypermedia Controls (HATEOAS)

    애플리케이션 상태 엔진으로서의 하이퍼미디어(HATEOAS, Hypermedia as the Engine of  Application State)는 리차드슨 성숙도 모델의 가장 성숙한 단계로서, 요청에 대한 하이퍼미디어 응답 속에 클라이언트가 다음에 취해야 할 액션에 관한 상태 정보가 담겨 있다. 레벨 3는 발견 가능성(Discoverability)가 높고, 응답 자체에 대한 필요한 내용이 고스란이 담겨 있다. 리소스 뿐만 ㅇ아니라 그 이상의 부가적인 정보까지 나타낸다는 점에서 HATEOAS가 진정한 REST냐 하는 문제는 아직도 논란의 여지가 있다.

     

    HATEOAS 적용해보기

    먼저 다음 그림과 같이 의존성 주입을 해줍니다.

    (메이븐을 이용했으므로 pom.xml에 다음과 같이 의존성을 추가함)

     

    pom.xml 파일에 의존성 추가

    그 다음 현재 프로젝트의 스프링 버전이 어떻게 되는지 확인을 해야합니다. 왜냐하면 스프링 버전에따라 HATEOAS를 적용하는 코드가 다음과 같이 달라지기 때문입니다.

     

    스프링 2.1.X인 경우

    Resource,

    ControllerLinkBuilder 를 이용

     

    스프링 2.2.X 이상인 경우

    Resource -> EntityModel,

    ControllerLinkBuilder -> WebMvcLinkBuilder 를 이용

     

    따라서 아래와 같이 버전 확인을 먼저 해줍니다.

     

    스프링 버전 확인

    스프링 버전이 2.1.14 인 것을 확인했으므로 Resource, ControllerLinkBuilder를 이용하여 필요에 따라 다음과 같이 HATEOAS를 적용.

     

    회원검색 API에 전체회원검색 API를 연결

     

    결과

     

     

    출처 : https://lifeisgift.tistory.com/entry/Restful-API-개요 [기록은 역사가 된다]
    출처 : https://www.inflearn.com/course/spring-boot-restful-web-services

    댓글

Designed by Tistory.