REST API와 GET, POST, PUT, DELETE
REST(Representational Sate Transfer)
REST는 웹에서 데이터를 전송하고 처리하는 방법을 정의한
인터페이스
를 말한다. 모든 데이터 구조와 처리방식은 REST에서URL
을 통해 정의되며, 그래서 매우 직관적으로 이해하기 쉽다.
REST란?
-
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
를 부여한다.
REST 구성
- 자원(Resource) - URI
- 행위 (Verb) - HTTP Method
- 표현 (Representations)
RESTful API의 URI 설계규칙
- 소문자 사용 (최소한 대소문자 구분)
- 하이픈(-, hypen)사용 : 공백 제거
- 확장자 사용 지양 : 헤더에 값을 넣는다.
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
HTTP Method와 CRUD
CRUD
Create : 데이터 생성(POST) Read : 데이터 조회(GET) Update : 데이터 수정(PUT) Delete : 데이터 삭제(DELETE) HEAD: 네트워크상 데이터의 header 정보 조회(HEAD)
HTTP 메소드
POST
: 현재 리소스(Collection)보다 한 단계 아래의 리소스(Document) 생성
GET
: 현재 리소스(Collection, Document)를 조회
PUT
: 현재 리소스(Document)의 정보 수정 (해당 자원의 전체를 수정)
DELETE
: 현재 리소스(Document)를 삭제
PATCH
: 현재 리소스(Document)를 수정 (해당 자원의 일부를 수정)
GET Method
보통 조회할 때 사용, SQL : SELECT에 해당 ex) 회원가입한 사용자의 정보 조회
GET http://localhost:8080/rest/api/v1/user/1
POST Method
보통 데이터를 추가할 때 사용, SQL : INSERT에 해당
POST http://localhost:4000/rest/api/v1/user
{
"username": "아무개",
"password": "1234",
"email": "test@google.com",
...
}
❖ 보통 생성 과정이 성공적으로 끝나면, 응답값으로 201 CREATED를 보낸다
PUT Method
보통 조회 할 때 사용, 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 메소드가 다르기 때문에 다르게 동작한다.
DELETE Method
보통 조회할 때 사용, 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
: 클라이언트가 불가능한 메소드를 사용했을 때
댓글남기기