REST는 웹에서 데이터를 전송하고 처리하는 방법을 정의한
인터페이스
를 말한다. 모든 데이터 구조와 처리방식은 REST에서URL
을 통해 정의되며, 그래서 매우 직관적으로 이해하기 쉽다.
HTTP URI
(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method
(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.
REST는 자원 기반의 구조(ROA, Resource Oriented Architecture) 설계의 중심에 Resource가 있고 HTTP Method를 통해 Resource를 처리하도록 설계된 아키텍쳐를 의미한다. 웹 사이트의 이미지, 텍스트, DB 내용 등의 모든 자원에 고유한 ID
인 HTTP URI
를 부여한다.
GET /hello HTTP/1.1
Host: domain.com
Accept: text/csv
Collection : 복수의 정보 리소스
Document : 단수의 엘리먼트 리소스
ex) http://domain.com/specis/human : species라는 collection에 human이라는 Document
ex) http://domain.com/species/human/tissue : human이라는 Document에 tissue라는 Collection
ex) http://domain.com/specise/human/tissue/liver/ : tissue라는 Collection에 liver라는 Document
Create : 데이터 생성(POST)
Read : 데이터 조회(GET)
Update : 데이터 수정(PUT)
Delete : 데이터 삭제(DELETE)
HEAD: 네트워크상 데이터의 header 정보 조회(HEAD)
POST
: 현재 리소스(Collection)보다 한 단계 아래의 리소스(Document) 생성
GET
: 현재 리소스(Collection, Document)를 조회
PUT
: 현재 리소스(Document)의 정보 수정 (해당 자원의 전체를 수정)
DELETE
: 현재 리소스(Document)를 삭제
PATCH
: 현재 리소스(Document)를 수정 (해당 자원의 일부를 수정)
보통 조회할 때 사용, SQL : SELECT에 해당
ex) 회원가입한 사용자의 정보 조회
GET http://localhost:8080/rest/api/v1/user/1
보통 데이터를 추가할 때 사용, SQL : INSERT에 해당
POST http://localhost:4000/rest/api/v1/user
{
"username": "아무개",
"password": "1234",
"email": "test@google.com",
...
}
❖ 보통 생성 과정이 성공적으로 끝나면, 응답값으로 201 CREATED를 보낸다
보통 조회 할 때 사용, SQL : UPDATE에 해당
사용자의 정보를 수정하고 싶은 경우, 수정하고 싶은 사용자 정보와 함께 PUT 방식으로 요청한다
PUT http://localhost:8080/rest/api/v1/user/{user_id}
예시: PUT http://localhost:8080/rest/api/v1/user/1
{
"password": "4321"
}
❖ 위 POST와 동일한 URL로 요청하지만, HTTP 메소드가 다르기 때문에 다르게 동작한다.
보통 조회할 때 사용, SQL : DELETE에 해당
사용자의 정보를 지우고 싶은 경우(탈퇴 처리) , DELETE 방식으로 사용자의 ID의 값과 함께 요청한다.
DELETE http://localhost:8080/rest/api/v1/user/{user_id}
예시: DELETE http://localhost:8080/rest/api/v1/user/1
200
: 클라이언트 요청 정상수행 (응답에 대한 메시지가 포함)
201
: 리소스 생성 요청에 대한 정상처리
202
: 리소스 생성 요청이 비동기적으로 처리될 때 사용
204
: 클라이언트 요청 정상수행 (응답에 대한 메시지 미포함, 보통 삭제요청에 사용)
400
: 클라이언트 요청이 부적절할 때 사용 (부적절한 이유를 응답 Body에 넣어줘야 함)
401
: 클라이언트가 인증되지 않은 상태에서 보호된 리소스를 요청할 때 사용
403
: 클라이언트가 인증상태와 무관하게 응답하고 싶지 않은 리소스를 요청할 때 사용 (400 사용을 권장)
404
: 클라이언트가 요청한 리소스가 존재하지 않을 때 사용
405
: 클라이언트가 불가능한 메소드를 사용했을 때