일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Java
- 애자일
- 클린코드
- 데이터베이스
- 그리디알고리즘
- 읽기쉬운코드
- API
- framework
- database
- 스프링
- 코딩테스트
- cleancode
- spring boot
- 엘라스틱서치
- Elasticsearch
- 애자일프로그래밍
- Spring
- 프레임워크
- 그리디
- 자바
- 애자일기법
- 개발
- 코딩
- 백준
- ES
- 코드
- 개발자
- Baekjoon
- 알고리즘
- JPA
- Today
- Total
튼튼발자 개발 성장기🏋️
#2 : RESTful Architecture Style 본문
REST를 구성하는 아키텍처 스타일을 모아보았다.
-
Client - Server
-
Stateless
-
Cache
-
Uniform Interface
-
Layered System
-
Code On Demand (이 녀석은 Optional)
잘 보면 HTTP API만 잘 지켜져도 다 만족할 수 있는 녀석들이다. 그러나 4번 Uniform Interface라는 녀석만이 지켜지기 어렵다. Uniform Interface의 4가지 제약조건이 있다.
- Identification of resources
- Manipulation of resources through representions
- self descriptive messages
- hypermedia as the engine of application state
이 중에서도 3번 항목과 4번 항목이 잘 지캬지지 않는다고 한다.
self descriptive messages의 예를 보자.
REST 에서는 self descriptive messages, 즉 메시지가 스스로 설명 하는 걸 이야기한다. - GET / HTTP/1.1 HTTP 통신하다 보면 상기 메시지를 많이 접할 수 있다. 상기 메시지에는 목적지를 알 수 없으므로 제대로 설명되어 있지 않기 때문에 지켜지지 않은 것이다. 이럴 땐 Host Header를 추가해서 잘 설명되어야 한다.
|
hypermedia as the engine of application state의 예를 보자.
hypermedia as the engine of application state, 즉 애플리케이션의 상태는 Hyperlink를 이용해서 전이 되어야한다. 이는 HATEOAS라고 읽기도 한다.
다시말해, 우리가 많이 알고있는 HTML로 이야기를하면 하이퍼링크를 통해 상태가 변경되어야한다는 말이다. |
그래서 우리는 왜 Uniform Interface 제약조건을 지켜야 하는가?
나도 서버 개발자이지만 "서버"라는 이 광범위한 것을 다 아는 것은 무리다. 서버가 있으면 당연히 클라이언트도 있을 것이고 이 두 녀석은 각각 독립적으로 버저닝이 되고 개발이 될 것이다. 또한 서버의 기능이 변경되어도 클라이언트는 업데이트할 필요가 없어야 한다. 반대로 클라이언트가 버전 업이 되거나 기능이 변경되어도 동일해야 한다. 그렇기 때문에 상기 예 처럼 꼭 지켜야하는 제약조건이 되는 것이다.
호환성을 고려한다는건 정말... 너무 힘들다ㅠㅠ
'API > RESTful' 카테고리의 다른 글
#3 : RESTful API 외우지말자 (0) | 2020.04.26 |
---|---|
#1 : RESTful API (0) | 2020.04.25 |