REST API
Representational state transfer
: 서버와 클라이언트간 분리된 구성 요소 간의 통일된 인터페이스를 제공하는 소프트웨어 아키텍쳐.
- 인터넷과 같은 복잡한 네트워크에서 통신을 관리하기 위해 만들어짐.
REST
는 자원(Resource)
, 행위(Verb)
, 표현(Representations)
으로 구성된 API 아키택쳐이다.
URI
는 정보의 자원을 표현해야 한다.
- 자원에 대한 행위는
URI
에 동사로 표현하지 않고 HTTP Method
를 사용한다.
stateless(무상태성)
: 클라이언트의 각 요청은 매번 개별적으로 실행됨, 서버가 클라이언트로 받는 요청은 이전, 이후의 요청과 전혀 관계가 없음을 나타냄.
- 처음 로그인에 성공한 후 다음 요청에 관해서는 세션이나 토큰 처리를 안해놓았다면 서버는 클라이언트가 누군지 모른다.
- 그러므로 매 요청시 서버에게 클라이언트가 누군지 나타내도록 별도의 작업이 필요하다.
- 매 요청은 반드시 개별 요청을 만족하기 위한 충분한 정보를 제공해야함.
설계 규칙
URI
에 _
(언더바)사용 금지, -
(하이픈)으로 대체
document(도큐먼트)
: 객체 인스턴스, DB의 레코드와 유사한 개념, 가장 기본이 되는 리소스 형식.
collection(컬렉션)
: 서버에서 관리하는 도큐먼트 리소스, 리스트.
store(스토어)
: 클라이언트에서 관리하는 리소스 저장소.
HTTP Methods
- 자원에 대한 행위는
HTTP Method
로 표현한다.
GET(읽기)
: 서버로부터 정보를 조회 또는 요청, http header
에 담아서 전송.
- 브라우저 검색창에 주소를 기입후 접속은
GET
요청에 해당.
- 제일 빈번하다.
POST(쓰기)
: 클라이언트에서 서버로 데이터 생성, http body
에 담아서 전송.
- 블로그, 페이스북, 인스타그램등 게시글을 포스팅 하는 행위(글 작성).
PUT(수정)
: 클라이언트가 서버에게 지정한 URL
데이터 저장 요청, POST
와 유사.
DELETE(삭제)
: 클라이언트가 서버에게 지정한 URL
데이터 삭제 요청.
URI
에 HTTP Method
가 포함하지 않는다.
GET /members/show
-> GET /members/1
GET /members/insert/2
-> POST /members/2
예시
CRUD | HTTP | URI |
---|
전체 리소스 조회 | GET | /resources |
특정 리소스 조회 | GET | /resources/:id |
리소스 생성 | POST | /resources/:id |
리소스 수정 | PUT | /resources/:id |
특정 리소스 삭제 | DELETE | /resources/:id |
Response code
1xx
: 전송 프로토콜 수준의 정보 교환.
2xx
: 클라이언트 요청이 성공적으로 완료됨.
200(OK)
: CRUD
의 성공적인 완료 상태 코드.
3xx
: 클라이언트는 요청을 완료하기 위해 추가적인 행동을 취해야 함.
4xx
: 클라이언트의 잘못된 요청.
403(Forbidden)
: 클라이언트가 컨텐츠에 접근할 권한을 가지고 있지 않음.
404(Not Found)
: 클라이언트의 요청 리소스를 서버가 찾을 수 없음, 브라우저에서는 알려주지 않은 URL을 의미.
5xx
: 서버측 오류로 인한 상태 코드.
References