HATEOAS를 알아보자

kshired·2021년 11월 16일
1
post-thumbnail

REST API를 공부하다보면, HATEOAS라는 개념이 언급 되는 것을 알 수 있습니다.

처음 듣는 이름이기도하고 생소한 개념이기 때문에 한 번 정리하고 넘어가겠습니다.

HATEAOS

먼저 간단하게 알아보면, REST API를 통해 클라이언트가 서버와 동적인 상호작용을 하도록 하는 것을 HATEOAS라고합니다.

HATEOAS는 "hate-ee-os"라고 읽으며, Hypermedia As The Engine Of Application State의 약자입니다.

이러한 HATEOAS의 특징으로 인해 클라이언트는 어떠한 동작을 했을 때 그 이후 가능한 동작들을 서버의 응답을 통해 전달받을 수 있습니다.

예를 들어, 어떠한 예약 서비스가 예약 상태에 따라 완료할 수 있는 예약이면 완료 처리를 할 수 있는 링크를 포함해 응답을 처리할 수 있도록 돕는 것을 예시로 볼 수 있습니다.

보통 HATEOAS를 사용한 API 응답의 Content-type은 application/hal+json을 사용하여 전달하며,
_links 필드에 그 url을 포함하여 응답하게 됩니다.

코드로 알아보기

역시 개발자는 개념을 보는 것보다 코드나 json 같이 시각적으로 파악할 수 있는 것을 보는 것이 더 편합니다.

예를 들어, 어떠한 사람이 게시판에 글을 등록하는 POST 요청을 보냈다고 가정하고, 한 번 응답을 보겠습니다.

// Content-type: application/hal+json
{
 	"post_id": 1,
 	 "_links": {
     		"self":{
                    "href":"http:/localhost:8080/posts/1" 
                },
                "get":{
                    "href":"http:/localhost:8080/posts/1" 
                },
                "update": {
                    "href":"http:/localhost:8080/posts/1" 
                },
                "delete": {
                    "href":"http:/localhost:8080/posts/1" 
                }
   	 }
}

위와 같이 일반적인 REST API의 응답에 _links 필드를 통해 다른 동작(조회, 업데이트, 삭제)을 할 수 있는 동적인 링크를 포함하고 있습니다.

Spring은 Spring HATEOAS 프로젝트를 통해 제공하고 있습니다.

profile
글 쓰는 개발자

0개의 댓글