REST API와 GET, POST, PUT, DELETE

Ogu·2022년 5월 8일
1

🌵 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
  • CRUD는 URI에 사용해선 안 된다.

📌 용어정리

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:8080/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 : 클라이언트가 불가능한 메소드를 사용했을 때

🌵 참고 URL


profile
Hello! I am Ogu, a developer who loves learning and sharing! 🐤🐤 <br> こんにちは!学ぶことと共有することが好きな開発者のOguです!🐤

0개의 댓글