Rest
Representational State Transfer
직역하자면 추상적 상태 교환?
자원의 상태에 의한 전달
REST의 구성
- 자원(RESOURCE) - URI
- 행위(VERB) - HTTP METHOD
- 표현(Representation of Resource)
URI
- 통합 자원 식별자(Uniform Resource Identifier, URI)는 인터넷에 있는 자원을 나타내는 유일한 주소이다.
- URI의 존재는 인터넷에서 요구되는 기본조건으로서 인터넷 프로토콜에 항상 붙어 다닌다.
- URI의 하위개념으로 URL, URN 이 있다.
HTTP METHOD
- POST (해당 URI에 대한 리소스를 생성)
- GET (해당 리소스를 조회)
- PUT (해당 리소스를 수정)
- DELETE (해당 리소스를 삭제)
REST API 설계규칙
- 동사보다는 명사를 사용한다.
- URI에 HTTP METHOD가 들어가서는 안된다.
- 경로중 변하는 부분은 유일한 값으로 대체한다. EX) 1,2,3…
URI 설계시 주의할 점
- 슬래시 구분자(/)는 계층 관계를 나타내는데 사용한다.
- 따라서 마지막 문자를 슬래시 구분자(/)로 쓰지 않는다.
- 하이픈(-)은 가독성을 높이는데 사용한다.
- 밑줄(_)은 사용하지 않는다.
- URI경로에는 소문자가 적합하다.
- 파일 확장자는 URI에 포함시키지 않는다.
- Accept header를 사용한다. Accept: image/jpg
HTTP 응답 상태 코드
100~500번대 응답이 많이 있지만, 주로 나타나는 응답 상태 코드입니다.
- 200: 요청이 성공적으로 되었습니다. 성공의 의미는 HTTP 메소드에 따라 달라집니다.
- 201: 요청이 성공적이었으며 그 결과로 새로운 리소스가 생성되었습니다.
- 400(Bad Request): 이 응답은 잘못된 문법으로 인하여 서버가 요청을 이해할 수 없음을 의미합니다.
- 401(Unauthorized): 비록 HTTP 표준에서는 “미승인(unauthorized)”를 명확히 하고 있지만, 의미상 이 응답은 “비인증(unauthenticated)”을 의미합니다.
- 403(Forbidden): 클라이언트는 콘텐츠에 접근할 권리를 가지고 있지 않습니다.
- 404(Not Found): 서버는 요청받은 리소스를 찾을 수 없습니다.
- 405(Method Not Allowed): 요청한 메소드는 서버에서 알고 있지만, 제거되었고 사용할 수 없습니다.
- 418(I’m a teapot): 서버는 커피를 찻 주전자에 끓이는 것을 거절합니다.
???? - 500(Internal Server Error): 서버가 처리 방법을 모르는 상황과 마주쳤다. 서버는 아직 처리 방법을 알 수 없다.
- 503(Service Unavailable): 서버가 요청을 처리할 준비가 되지 않았다. 일반적인 원인은 유지보수를 위해 작동이 중단되거나 과부하가 걸린 서버다.
RESTFUL이란
- 위의 REST API를 따르는 웹 서비스를 RESTFUL하다고 한다.
beautiful, hateful, careful 같이