[REST가 의미하는 것이 무엇인가요?]
- REpresentational State Transfer
표현된 상태
- 통신을 통해 자원의 표현된 상태를 주고 받는 것에 대한 아키텍쳐 가이드라인
[사실 주고 받는 것은 리소스가 아니다.]
// 요청
GET <https://iamserver.com/api/users/2>
Host: iamserver.com
Accept: application/json
// 응답
HTTP/1.1 200 OK
Content-Length: 45
Content-Type: application/json
{
id: 2,
name: 'Evan',
org: 'Viva Republica',
}
- JSON을 주고받았다고 생각하겠지만 사실 저 JSON은 DB에 있는 것을 JSON 형태로 표현한 것에 불과하다
- 진짜 원본은 데이터 베이스에 담긴 하나의 로우나 파일에 작성된 데이터
- 전달 받은 리소스인 JSON은 그냥 표현하기 위한 수단
[리소스가 표현된 상태
라는 것의 의미]
GET <https://iamserver.com/api/users/2>
Host: iamserver.com
Accept: application/json
- 적당한 상태의 힌트는 헤더에 담겨있다
- 서버는 응답 헤더에
Content-Type
이나 Content-Language
와 같은 키를 사용하여 이 리소스가 어떤 방식으로 표현된 상태인지 클라이언트에게 알려주고, 클라이언트 또한 이 정보를 읽은 후 각 컨텐츠 타입에 맞게 정보를 파싱
- 클라이언트는 리소스를 받은게 아니라 유저의 리소스 현재 상태를 받은것
- REST는 클라이언트와 서버가 리소스의 타입이나 원하는 언어 등을 사용하여 자원을 자유롭고 명확하게 표현할 수 있는 것에 집중
[RESTful API]