Coding/Spring(Boot)

HTTP 메서드 (GET, POST, PUT, PATCH, DELETE)

민톨이 2025. 2. 7. 02:03
728x90

📌 API URI 설계

=> 리소스 식별이 중요하다

ex) 회원을 등록한다 => "회원"이 리소스

 

결론: 회원 리소스를 URI에 매핑해야함

 

ex)회원 목록 조회 /members
      회원 조회 /members/{id}
      회원 등록 /members/{id}
      회원 수정 /members/{id}
      회원 삭제 /members/{id}

 

이렇게 같게 생겼으면 어떻게 구분하는가?

=> 리소스와 행위를 분리하자

 

리소스: 회원 / 행위: 조회, 등록, 수정, 삭제 

 

이걸 구분하기 위해 HTTP 메서드를  ,,!

 

 

HTTP 주요 메서드

GET: 리소스 조회
POST: 요청 데이터 처리, 주로 등록에 사용

PUT: 리소스를 대체, 해당 리소스가 없으면 생성

PATCH: 리소스 부분 변경
DELETE: 리소스 삭제

 

<개인적으로 헷갈리는 메서드>

📌 POST

- 요청 데이터 처리

- 메시지 바디를 통해 서버로 요청 데이터 전달

- 서버는 요청 데이터를 처리

- 메시지 바디를 통해 들어온 데이터를 처리하는 모든 기능을 수행한다.

 

ex)
클라이언트                                                                                         서버
{                                                                                                         {

  "username": "mintol"              =======POST=========>       "username": "mintol"

  "age": 29                                                                                           "age": 29

}                                                                                                          }

 

이런식으로 신규 리소스를 생성한다

 

📌 PUT

- 리소스를 대체

- 리소스가 있으면 대체하고 없으면 생성한다 (덮어씌움)  

- 클라이언트가 리소스를 식별

중요! 리소스를 "완전히" 대체한다 (부분수정 x)

 

📌PATCH

-리소스 부분 변경

 

ex)

기존 서버 리소스

{

   "username": "mintol"

   "age": 29

}

 

클라이언트                                                                                         서버
{                                                                                                         {

                                                 =======PATCH========>       "username": "mintol"

  "age": 30                                                                                       "age": 30

}                                                                                                          }

(username 필드 x)                                                                        (age만 부분 수정)

 

 

 

(post와 patch가 헷갈려서 정리해보았다)