관리 메뉴

플랫폼공작소 IT Blog

[5분 완벽설명] REST API란 무엇인가? - 2부 본문

2. 강의실/그런 rest api로 괜찮은가? 강의 정리

[5분 완벽설명] REST API란 무엇인가? - 2부

솜픽(Sompic) 플랫폼공작소 2020. 4. 9. 16:03

지난 시간에 REST는 REST의 제약조건[각주:1] 두 지키는 소프트웨어라고 정의하였습니다.

제약조건을 모두 지켜야 REST라고 부릅니다.


아니 답답하다. REST 제약조건이 도대체 무엇이냐?

- REST 제약조건은 총 6가지로

1. client-server

2. stateless

3. cache

4. **uniform interface

5. layered system

6. code-on-demand : 자바스크립트 사용가능

이 있슴다. **unifom interface만 암기하시면 됩니다.


uniform interface이 무엇이냐? 

- 4가지로 이뤄진 제약조건입니다.


삑!


1. 리소스가 URL로 식별되면 된다.

2. 리소스를 삭제/수정/입력할 때 HTTP메세지에 그 표현을 담아서 전송

3. 메세지만 봐도 뭔 소린지 해석할 수 있어야 한다.(self-descriptive message)

4. 링크[각주:2]를 써서 페이지를 이동하라.(HATEOS)


oh.. 파란 글씨를 조금만 더 설명해줘라

메세지는 스스로 설명해야합니다. 예를들어서,


1
GET / HTTP/1.1
cs


라는 메세지가 있습니다. 

뭔가 빠진게 있는데 뭐가 빠졌냐면, 목적지가 빠져있습니다.


나 지금 어디로 가는거야??


1
2
GET / HTTP/1.1
Host: www.example.com
cs

Host를 작성하셔서 이 메세지가 향하는 목적지가 어디인지 알려주셔야 합니다. 

이렇게 쓰신다면, 메세지만 봐도 이 메세지를 해독할 수 있게 됩니다.


다음으로는 응답 메세지를 예시로 들겠습니다.

1
2
HTTP/1.1 200 OK
[{"op":"remove","path":"/A/B/C"}]
cs


우리야 위 메세지를 보면, 

"아.. 저놈 json이 담겨있네?" 라고 생각하겠지만

클라이언트(컴퓨터)는 그렇지 않습니다.


HTTP/1.1 200 OK
Content-Type: application/json-patch+json
[{"op":"remove","path":"/A/B/C"}]

이렇게 Content-Type 적혀있어야 "아 저놈 제이슨이구나! 근데 oppath는 뭘 말하는 거지? 미디어타입이 json patch네. json patch명세를 보고 그것들이 뭔지 알아와야겠다." 라고 클라이언트가 메세지를 해석할 수 있게됩니다.


결론 : REST가 무엇이냐?

- REST 제약조건을 지킨 소프트웨어입니다.


그 제약조건이 무엇이냐?

- 리소스가 URL로 식별되어야하고, 리소스를 입력/수정/삭제할 때 HTTP메세지 그 의도를 담아야 하고, HTTP메세지만 봐도 뭔소린지 알아야하고, 링크를 써서 페이지를 이동해야한다고 답하면 됩니다.


다음시간에는 HATEOS에 대해서 설명하고 포스팅을 마무리하겠습니다. 


Continue..

[5분 완벽설명] REST API란 무엇인가? - 3부



reference : REST(2000)

reference : 그런 REST API로 괜찮은가

광고 링크 : 플랫폼공작소, 플랫폼공작소TV, 쇼핑몰


footnote :

  1. 아키텍쳐 스타일 [본문으로]
  2. 하이버링크 [본문으로]
0 Comments
댓글쓰기 폼