Hypermedia As The Engine Of Application State

  • 이름부터가.. 너무 길다.... 뭐지..??
  • 천천히 접근해보자
  • HATEOAS는 REST API와 연관이 있다고 합니다.
  • Rest API에서 R은 Resource...자원과 관련이 있나봅니다!
  • 그래서 찾아 봤더니 HATEOAS는 서버와 클라이언트 관점에서 각각의 역할을 한다고 합니다.
    • 서버: 현재 리소스와 연관된 링크 정보를 클라이언트에게 제공한다.
    • 클라이언트: 연관된 링크 정보를 바탕으로 리소스에 접근한다.
  • ObjectMapper 제공
    • spring.jackson.*
    • Jackson2ObjectMapperBuilder
  • 음..그래도 뭔가 이해가 안갑니다.
  • 그래서 구글링을 통해 이 블로그를 발견합니다.
  • 예제를 보니 뭔가 팍 꽂힙니다.

전형적인 REST API 응답 데이터

{
  "name": "jun"
}

HATEOAS 도입

{
  "name": "jun",
  "links": [
    {
      "rel": "self",
      "href": "http://localhost:8080/user"
    },
    {
      "rel": "delete",
      "href": "http://localhost:8080/user/delete"
    },
    {
      "rel": "update",
      "href": "http://localhost:8080/user/update"
    }
  ]
}
  • 둘 차이를 아시겠나요??
  • HATEOAS를 보면 name이 존재하기 때문에, 삭제(delete)수정(update)을 실행할 수 있는 API 엔드포인트를 확인이 가능합니다.
  • 정리하자면 rel 이름만 알면 해당 기능의 실행 가능 여부를 판단할 수 있게 됩니다!
  • 아래 참조 사이트에 자바 코드 예제나 설명이 자세히 나와있으니 시간이 있으시면 방문하는걸 추천합니다!

Reference