REST API와 GET, POST, PUT, DELETE

정호·2023년 4월 7일
2

TIL

목록 보기
1/17

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 내용 등의 모든 자원에 고유한 IDHTTP 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 : 클라이언트가 불가능한 메소드를 사용했을 때

profile
열심히 기록할 예정🙃

0개의 댓글