CS
[네트워크] HTTP 메소드 :: PUT, POST, PATCH 차이
그레고리력
2021. 3. 27. 17:00
POST : 요청된 리소스를 생성(CREATE)
PUT : 요청된 리소스를 수정(UPDATE)
PATCH : PUT의 경우 리소스 전체를 갱신, PATCH는 리소스의 부분만을 수정
TRACE : 메시지가 프락시를 거쳐 서버에 도달하는 과정을 추적(진단에 사용)
OPTIONS : 서버가 어떤 메소드를 수행할 수 있는지 확인
- HTTP 메소드에 대한 기본적인 내용은 다음 포스팅에서 다루었습니다. HTTP GET, POST 차이 링크.
- CRUD에서 조회는 GET, 등록은 POST, 수정은 PUT, 삭제는 DELETE를 이용합니다.
- 이번에는 HTTP 메소드 중 개념에 대한 이해가 헷갈리는 PUT, POST, PATCH에 대하여 다루어보겠습니다.
POST과 PUT의 차이
- PUT 메서드의 의미는 서버가 요청의 본문을 가지고 요청 URL의 이름대로 새 문서를 만들거나 이미 URL이 존재한다면 본문을 사용해서 교체하는 것
- POST와 PUT을 구분하기 위해서는 멱등성의 개념이 필요함
- 멱등성(Idempotence)이란 여러번 수행해도 결과가 같음을 의미
- GET, PUT, DELETE는 같은 경로로 여러 번 호출해도 결과가 같지만 POST는 매 호출마다 새로운 데이터가 추가
- POST의 경우 클라이언트가 리소스의 위치를 지정하지 않는 경우 사용되며 ~/1, ~/2 등 매번 새로운 데이터 생성
PUT과 PATCH의 차이
- 둘 다 데이터의 수정을 위한 메소드
- PUT의 경우 리소스 전체를 갱신, PATCH는 리소스의 부분만을 수정
- PUT 요청 시 전체가 아닌 일부만 전달할 경우, 전달한 필드외 모두 null 혹은 default 값처리되어 바뀌지 않는 속성도 모두 보내야 함
- PATCH의 경우 기존 데이터가 유지되고 바뀐 부분만 반영된다.
- PUT의 경우는 멱등하지만, PATCH의 경우는 멱등하지 않다
- PATCH는 멱등이 아니기 때문에 사용자 의 속성을 증가하는 등의 설계가 가능하고 이는 매번 요청 시 다른 결과를 발생시킴
HTTP 요청 응답 헤더
- 요청 헤더 : 요청 정보 행(get/디렉토리와 파일명 프로토콜 버전 정보 등), host: 웹 서버 정보, 웹 브라우저에 관한 정보, get은 메시지 바디가 없음
- 응답 헤더 : 응답 정보 행(200 ok 등 상태 정보), 헤더에 파일 갱신날짜나 크기 같은 정보, 메시지 바디에 HTML 파일 내용이 들어감
- 상태 코드, 100번대는 정보, 200번대는 성공, 300번대는 경로 전환, 400번대는 에러를 의미