HTTP POST vs PUT

kudos·2021년 5월 25일
0

네트워크

목록 보기
4/5

1. PUT

GET 메소드가 서버로부터 문서를 읽어 들이는데 반해 PUT 메소드는 서버에 문서를 쓴다. 어떤 발행 시스템은 사용자가 PUT을 이용해 웹페이지를 만들고 웹 서버에 직접 게시할 수 있도록 해준다.

PUT 메소드의 의미는, 서버가 요청의 본문을 가지고 요청 URL의 이름대로 새 문서를 만들거나, 이미 URL이 존재한다면 본문을 사용해서 교체하는 것이다. PUT은 콘텐츠를 변경할 수 있게 해주기 때문에 많은 웹 서버가 PUT을 수행하기 전에 사용자에게 비밀번호를 입력해서 로그인을 하도록 요구한다.

POST 메소드와의 가장 큰 차이는 자원의 식별자를 알고 있어야 한다는 점이다. 그 자원을 HTTP 메시지와 함께 넘어온 엔티티로 교체한다. response code는 200(OK), 204(no content)를 사용한다. 식별자에 맞는 자원이 없는 경우에는 새 자원을 생성하고 response code는 201(created)이다.

2. POST

POST 메소드는 서버에 입력 데이터를 전송하기 위해 설계되었다. 실제로 HTML form을 지원하기 위해 흔히 사용된다. 채워진 form에 담긴 데이터는 서버로 전송되며, 서버는 이를 모아서 필요로 하는 곳(예를 들면, 그 데이터를 처리한 서버 gateway 프로그램)에 보낸다.

다음 그림은 클라이언트가 POST 메소드를 이용해 form 데이터를 서버로 전달하는 요청을 하는 것을 보여준다.

POST 메소드는 기본적으로 등록에 관한 내용이다. HTTP 메시지로 넘어온 엔티티를 새로운 자원으로 등록한다.

  • 새로운 자원으로 등록하지 않는 경우엔, 200(OK)나 204(no content) response code로 응답한다.
  • 새로운 자원으로 만들어진 경우엔, 201(created) response code로 응답하며 신규 생성된 자원의 위치를 헤더에 포함해야 한다. 예를 들어, 게시판에 새로운 게시물을 등록하면 다음과 같이 이를 따라갈 수 있는 위치를 응답 헤더에 넣어야한다는 것이다.
201 created 
Location: /board/2

3. PUT vs POST

멱등성(idempotency) : 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질

  • POST는 요청 메시지에 포함된 엔티티를 이용해 새로운 자원을 생성하는 것이기 때문에 여러 번 호출하면 자원이 여러 번 생성된다.
  • 반면 PUT은 요청 메시지에 포함된 식별자를 이용하기 때문에 여러 번 호출하더라도 같은 자원에 적용된다.

참고

profile
kudos

2개의 댓글

comment-user-thumbnail
2021년 5월 29일

시리즈 만들어주세여

1개의 답글