dev2017. 2. 28. 21:29

스프링 문서를 보다가 HATEOAS 라는게 나와서

무엇에 쓰는 물건인가 알아보았다.


역시 한글로 정리된게 짱이다.

http://blog.woniper.net/219


위 포스팅을 보면 대충 뭔지는 알것 같은데,

왜 이렇게 쓰는지 이해가 잘 안된다.

아무리 클라에서 서버의 규약(혹은 api 정의)를 따라야 하는건 매한가지 아닌가?

하다못해 link 의 rel 키값이라도 알아야 쓰지.


이쯤 되면 역시 영어가 짱이다. 슬픈 현실 ㅠ_ㅠ

https://en.wikipedia.org/wiki/HATEOAS


위 링크를 보면 감이 대충 스멀스멀 온다.

HTTP/1.1 200 OK Content-Type: application/xml Content-Length: ... <?xml version="1.0"?> <account> <account_number>12345</account_number> <balance currency="usd">100.00</balance>

<link rel="deposit" href="https://bank.example.com/account/12345/deposit" /> <link rel="withdraw" href="https://bank.example.com/account/12345/withdraw" />

<link rel="transfer" href="https://bank.example.com/account/12345/transfer" /> <link rel="close" href="https://bank.example.com/account/12345/close" />

</account>

아~

저렇게 쓰자는거구나. 싶다.

일종의 규약인 셈이다.

이런 식으로 만들면, 클라 개발하는 양반들이 특정 동작에 뒤따를만한 명령을 파악하는데 도움이 되고,

restful api 명세 변경시 대응할 필요도 없고 (link 에 지정된 주소를 그냥 사용하면 되니까 대응이 필요 없음. 키가 바뀌지 않는 한.. -.-;;)


암튼 그러라고 나온 개념이구나 싶당.

아래는 스프링에 정리되어 있는 HATEOAS 내용이다. json 버전의 예시를 볼 수 있다.


https://spring.io/understanding/HATEOAS


{
    "name": "Alice",
    "links": [ {
        "rel": "self",
        "href": "http://localhost:8080/customer/1"
    } ]
}

아 물론 내가 이걸 쓸지 안쓸지

그건 좀 더 두고 봐야겠다. ㅋ

'dev' 카테고리의 다른 글

mysql 에 이모지 emoji 사용하기 utf8mb4  (0) 2017.03.20
CKEDITOR link 내에서 & (ampersand) 치환 이슈  (0) 2017.03.17
python BeautifulSoup  (0) 2017.02.25
graph db 탐험기  (0) 2017.02.21
eclipse zookeeper plugin  (0) 2017.02.13