[섹션 6] RESTful API 설계 가이드
성숙도 모델 (RMM)
- REST API 를 만들 때 주의사항, 고려사항, 어떤 단계로 하면 좋은지에 대해서 나눈 모델
LEVEL 0
- 기존의 데이터(리소스)를 웹서비스 형태로 제공하기 위해 단순히 URI 맵핑만 가지고 있는 형태
EX) http://server/getPosts 와 같이 주소 체계가 우리가 작성해 왔었던 http 개념 이 아닌 단순히 리소스가 어떠한 작업을 해야 되는지를 전부 주소 이름에 명시한 케이스
LEVEL1
- 우리가 웹으로 공개하고자 하는 리소스에 대해 좀 더 의미 있고 적절한 URI를 가지고 표현
EX) http://server/accounts
http://server/accounts/10
-일정한 패턴을 가지고 작성되어 있지만 http메소드별로 서비스를 구분해서 사용하고 있지는 않음.
-리소스의 형태 나 작업의 종류에 맞춰서 적절한 http 메소드를 지정하고 있지 않다는 얘기이며 실제로 많은 restful 서비스의 이와 유한 형태를 가지고 작업된 것을 볼수 있음.
- 사용자의 요청을 단순히 get/post와 같은 메소드로만 처리 / 모든 반환 코드를 200 ok 로 단순 반환하는 케이스.
LEVEL2
- LEVEL1 + HTTP Methods
LEVEL3
-LEVEL2 +HETEOAS
- 리소스를 적절한 상태로 표현할 수 있는 레벨2 단계와 더불어 다음 작업으로 어떤 것을 할 수 있는지 현재 작업에서 그 다움에 할 수 있는 행동들이 어떤 것이 있는지 또 그 작업을 위해 다뤄져야 하는 리소스의 URL이 어떤것이 있는지에 대해서 한꺼번에 알려줌.
고려사항
- 고객중심 개발
- HTTP 의 장점 활용
- REQUEST METHODS 별로 개발
- RESPONSE 상태 : 200,404,400,201,401
- 보안이필요한 정보는 URI에 표시 하면 안됨
- 복수형태를 사용 : PREFER/USERS/1TO /USERS/1
- 명사형 사용
- 일관된 엔드포인트 사용 : /search , PUT/gists/{id}/star
-- RESTful Api 웹 서비스 개발
: 화면단에 가지고 있지 않은 RESTFul Api 만을 서비스하는 형태 어플리케이션.
다양한 클라이언트 어플리케이션으로 확장 가능