개발일기
HTTP 메서드 - PUT, PATCH, DELETE 본문
PUT
- 리소스를 대체
- 리소스가 있으면 대체 (완전하게 대체함)
- 리소스가 없으면 생성
- 쉽게 이야기해서 덮어버림
- 중요! 클라이언트가 리소스를 식별
- 클라이언트가 리소스 위치를 알고 URI 지정
- POST와 차이점
폴더의 파일을 복사하는 원리와 똑같다보면 됨. 폴더에 파일이 없으면 넣어주고 폴더에 파일이 있으면 지우고 덮어씌우는 원리
PUT 리소스가 있는 경우1
=======================================
PUT /members/100 HTTP/1.1
Content-Type: application/json
{
"username" : "hello",
"age" : 50
}
=========================================
클라이언트가 구체적인 전체적인 위치 경로를 알고 URL을 지정하는 것이다.
이것이 바로 포스트와의 큰 차이점
POST의 경우 클라이언트는 100번에 만들지 200번에 만들지 잘 모름
하지만 PUT의 경우는 정확히 100을 보내고있음.
PUT을 요청메시지를 보내면
============================
/members/100
{
"username" : "young",
"age" : 20
}
=============================
이렇게 있으면 리소스가 메시지를 받으면
=============================================
/members/100
{
"username" : "old",
"age" : 50
}
==============================================
PUT리소스가 없는 경우
그냥 그대로 들어가서 신규리소스가 생성이 된다.
PUT 주의! - 리소스를 완전히 대체한다
===============================
PUT /members/100 HTTP/1.1
Content-Type: application/json
{
"age" : 50
}
================================
요청을 보면 유저이름을 빼고 나이만 대체하고 싶어서 나이 데이터만 보내는 경우이다.
기존의 데이터는
=========================================
/members/100
{
"username" :"young",
"age" : 50
}
===========================================
서버에서 요청을 받으면 리소스가
=============================================
/members/100
{
"age" : 50,
}
=============================================
username 필드가 삭제되어져 버린다.
완전히 대체 되어버려서 기존의 것이 삭제되어버리는 것이다.
이렇게 되면 리소스를 수정하는게 어려움
PUT은 리소스를 갈아치우는 용도로만 사용함.
PATCH
리소스 부분 변경1
=================================
PATCH /members/100 HTTP/1.1
Content-Type: application/json
{
"age" : 50
}
=================================
이 요청 메시지를 서버로 보내면
리소스 부분 변경
/members/100
===================================
{
"username" : "young",
"age" : 50
}
====================================
age만 50으로 변경
부분적으로 리소스 데이터 바꾸싶으면 PATCH사용
간혹 HTTP에서 PATCH를 못받아들이는 경우가 있는데 이때는, POST를 사용하자.
DELETE
- 리소스 제거
=====================================
DELETE /members/100 HTTP/1.1
Host: localhost:8080
=====================================
'Spring > (김영한님)HTTP웹 기본 지식' 카테고리의 다른 글
HTTP 메서드 활용 (클라이언트에서 서버로 데이터 전송) (0) | 2023.03.10 |
---|---|
HTTP 메서드의 속성 (0) | 2023.03.10 |
HTTP 메서드 - GET, POST (0) | 2023.03.10 |
HTTP API를 만들어보자. (0) | 2023.03.10 |
Stateful, Stateless (0) | 2023.03.09 |