REST는 웹에서 데이터를 전송하고 처리하는 방법을 정의한 인터페이스를 말한다. 모든 데이터 구조와 처리방식은 REST에서 URL을 통해 정의되며, 그래서 매우 직관적으로 이해하기 쉽다.
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:8080/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
: 클라이언트가 불가능한 메소드를 사용했을 때