5. Architectural Styles and the Design
of Network-based Software
Architectures, 2000, 논문
Roy T. Fielding
웹(HTTP) 설계의 우수성에 비해 제대로
사용되어지지 못하는 모습에 안타까워하며
웹의 장점을 최대한 활용할 수 있는 아키텍처
28. OPTIONS : 가능한 method를 확인한다
GET : 요청 URI 의 자원을 가져온다
POST : 요청 URI 의 신규 자원을 보낸다
PUT : 요청 URI 의 자원의 정보를 저장한다
DELETE : 요청 URI 의 자원을 삭제한다
HEAD : GET 요청에 HEAD만 받는다
TRACE : 보낸 메시지를 다시 돌려준다
CONNECT : proxy 에서 사용
Method
Body
36. URI 자원은 명사
DELETE /credits
GET /credits/cancel
POST /credits?action=cancel
Credit(신용) 에 대한 API 유추
동작은 Method로 정의!!! 제발!!
37. URI 자원 ID는 URI로 명시적 표기
GET /credits/12345
GET /credits?id=12345
기능적 문제 X
단, URI와 Method로 API 표현 강화
38. URI 자원은 여러개
GET /credit/12345
GET /credits/12345
단일 자원이 아닌 경우 복수의 이름으로
그 속성을 정의한다.
39. Status Code Body는 데이터를 위한 공간
POST /credits → 응답 400(잘못된 요청)
POST /credits → 응답 200(정상?)
{“success” : false}
모든 요청은 응답코드로 판단
과연 200과 false는 정상인가 실패인가?
40. Status Code 의미전달
GET /credits → 응답 204
GET /credits → 응답 200
-- empty body --
Client 에게 충분한 정보를 제공필요
만약 데이터가 없는 것이 에러라면 400, 500