Representational State Transfer API 용어의 약자로, HTTP의 장점을 최대한 활용할 수 있는 아키텍처인 REST
1. URI는 정보의 Resource(자원)를 표현!
DELETE /members/1
(⭕), GET /members/delete/1
(❌)GET /members/1
(⭕), GET /members/show/1
(❌)POST /members/2
(⭕), GET /members/insert/2
(❌)2. Resource(자원)에 대한 Verb(행위)는 HTTP Method(GET, POST, PUT, DELETE)로 표현!
HTTP Method의 역할을 잘 구분하여 사용하는 것이 바로 RESTful API 이다!
Method | 역할 |
---|---|
POST | 해당 URI를 요청하여 Resource를 생성 |
GET | 해당 Resource를 조회, 해당 도큐먼트에 대한 자세한 정보 가져옴 |
PUT | 해당 Resource 수정 (존재하지 않는 URI에 PUT 요청시 "생성"도 가능) |
DELETE | 해당 Resource 삭제 |
http://restapi.example.com/houses/apartments
http://restapi.example.com/animials/mammals/whales
-
) 사용!_
) 사용 X!/리소스명/리소스ID/관계가 있는 다른 리소스명
GET : /users/{userid}/devices
GET : /users/{userid}/likes/devices
Document와 Collection은 모두 Resource이고 URI에 표현된다!
Collection은 복수로 사용 가능하다!
ex. sports라는 collection과 soccer라는 document
-> http://restapi.example.com/sports/soccer
ex. sports, players collection(복수 가능)과 soccer, 13번선수 document
-> http://restapi.example.com/sports/soccer/players/13
리소스들을 정렬, 필터링, 페이징하는 곳에 사용
parameter들을 ?와 &을 이용하여 작성
/board/list?writer=john
-> writer가 john인 게시글들을 모두 가져오기
구체적으로 리소스를 식별하는데 사용
{}나 :을 사용하여 작성
/board/12
-> id가 12인 게시글 하나 가져오기
상태 코드 | 내용 |
---|---|
2xx | ===== 성공 ===== |
200 | client의 요청을 정상적으로 수행 |
201 | client가 POST로 어떠한 resource 생성을 요청, 해당 resource가 성공적으로 생성됨 |
3xx | ===== 리다이렉션 완료 (클라이언트의 추가 동작 필요) ===== |
301 | client가 요청한 resouce에 대한 URI가 변경 되었을 때 (응답 시 location header에 변경된 URI를 기입 필요) |
4xx | ===== client 오류 ===== |
400 | client의 요청이 부적절, 서버가 요청의 구문을 인식하지 못했다. |
401 | 인증 실패, client가 인증되지 않은 상태에서 보호된 resource를 요청 (로그인 하지 않은 유저가 로그인 했을 때, 요청 가능한 resource를 요청했을 때 |
403 | 인가 실패로 접근 거부, 유저 인증상태와 관계 없이 응답하고 싶지 않은 resource를 client가 요청했을 때 |
404 | resource를 찾을 수 없음, client가 존재하지 않는 resouce를 요청했을 때 |
405 | client가 요청한 resource에서는 사용 불가능한 method를 이용했을 경우 |
5xx | ===== server 오류 ===== |
500 | 내부 server에 문제가 있을 때 |
503 | 서비스 불가능 (일반적으로 proxy 장비에서 서버에 서비스가 불가능할 때 띄움) |
references:
https://meetup.toast.com/posts/92
https://ko.wikipedia.org/wiki/HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C