[http] POST와 PUT HTTP REQUEST의 차이점은 무엇입니까?

둘 다 본문 내부의 서버로 데이터를 보내는 것 같습니다. 어떻게 다른 점이 있습니까?



답변

HTTP PUT :

PUT은 파일 또는 리소스를 특정 URI에 정확하게 해당 URI에 넣습니다. 해당 URI에 파일이나 리소스가 이미 있으면 PUT은 해당 파일이나 리소스를 대체합니다. 파일이나 리소스가 없으면 PUT에서 파일이나 리소스를 만듭니다. PUT은 dem 등원 이지만 역설적으로 PUT 응답은 캐시 할 수 없습니다.

PUT의 HTTP 1.1 RFC 위치

HTTP POST :

POST는 데이터를 특정 URI로 보내고 해당 URI의 리소스가 요청을 처리 할 것으로 예상합니다. 이 시점에서 웹 서버는 지정된 자원의 컨텍스트에서 데이터로 수행 할 작업을 결정할 수 있습니다. POST 메소드는 idempotent 가 아니지만 서버가 적절한 Cache-Control 및 Expires 헤더를 설정하는 한 POST 응답 캐시 가능합니다.

공식 HTTP RFC는 POST를 다음과 같이 지정합니다.

  • 기존 자원의 주석
  • 게시판, 뉴스 그룹, 메일 링리스트 또는 유사한 기사 그룹에 메시지 게시;
  • 양식 제출 결과와 같은 데이터 블록을 데이터 처리 프로세스에 제공하는 단계;
  • 추가 작업을 통해 데이터베이스를 확장합니다.

POST의 HTTP 1.1 RFC 위치

POST와 PUT의 차이점 :

RFC 자체는 핵심 차이점을 설명합니다.

POST와 PUT 요청의 근본적인 차이점은 Request-URI의 다른 의미에 반영됩니다. POST 요청의 URI는 동봉 된 엔터티를 처리 할 리소스를 식별합니다. 해당 리소스는 데이터 수락 프로세스, 다른 프로토콜의 게이트웨이 또는 주석을 허용하는 별도의 엔터티 일 수 있습니다. 반대로 PUT 요청의 URI는 요청으로 둘러싸인 엔티티를 식별합니다. 사용자 에이전트는 어떤 URI가 의도되어 있는지 알고 서버는 요청을 다른 자원에 적용해서는 안됩니다. 서버가 요청을 다른 URI에 적용하려면 301 (영구적으로 이동) 응답을 보내야합니다. 그런 다음 사용자 에이전트는 요청을 리디렉션할지 여부에 대한 자체 결정을 내릴 수 있습니다.

또한 RFC 7231 섹션 4.3.4 PUT 상태 (강조 추가)

4.3.4. 놓다

PUT 메소드는 대상 자원
의 상태가 요청 메시지 페이로드에 포함 된 표시에 의해 정의 된 상태 created또는 replaced상태가되도록 요청합니다.

적절한 방법을 사용하면 관련이 없습니다.

REST ROA 와 SOAP의 장점 중 하나 는 HTTP REST ROA를 사용할 때 HTTP 동사 / 방법의 올바른 사용을 장려한다는 것입니다. 예를 들어 정확한 위치에 리소스를 만들려는 경우에만 PUT을 사용합니다. 그리고 GET을 사용하여 리소스를 만들거나 수정하지 않습니다.


답변

의미론 만.

HTTP PUT는 요청 본문을 수락 한 다음 URI로 식별 된 리소스에 저장해야합니다.

HTTP POST가 더 일반적입니다. 서버에서 작업을 시작해야합니다. 이 조치는 요청 본문을 URI로 식별 된 자원에 저장하거나 다른 URI이거나 다른 조치 일 수 있습니다.

PUT은 파일 업로드 와 같습니다 . URI에 넣는 것은 해당 URI에 정확히 영향을줍니다. URI에 대한 POST는 전혀 영향을 미치지 않습니다.


답변

REST 스타일 자원의 예를 제공하려면 다음을 수행하십시오.

많은 책 정보가 포함 된 “POST / books”는 새로운 책을 만들고 해당 책을 식별하는 새로운 URL로 응답합니다 : “/ books / 5”.

“PUT / books / 5″는 id가 5 인 새 책을 만들거나 기존 책을 ID 5로 바꿔야합니다.

비자 원 스타일에서 POST는 부작용이있는 모든 것에 사용될 수 있습니다. 또 다른 차이점은 PUT은 dem 등원이어야한다는 것입니다. 여러 개의 POST가 여러 개의 오브젝트를 작성하거나 POST 조치가 수행하는 모든 작업을 수행 할 수 있지만 동일한 URL에 동일한 데이터의 여러 PUT은 양호해야합니다.


답변

  1. GET : 서버에서 데이터를 검색합니다. 다른 효과가 없어야합니다.
  2. POST : 새 엔티티를 작성하기 위해 서버로 데이터를 보냅니다. 파일을 업로드하거나 웹 양식을 제출할 때 종종 사용됩니다.
  3. PUT : POST와 유사하지만 기존 엔티티를 대체하는 데 사용됩니다.
  4. PATCH : PUT과 유사하지만 기존 엔터티 내의 특정 필드 만 업데이트하는 데 사용됩니다.
  5. DELETE : 서버에서 데이터를 제거합니다.
  6. TRACE : 서버가받는 것을 테스트하는 방법을 제공합니다. 보낸 내용 만 반환합니다.
  7. 옵션 : 클라이언트가 서비스가 지원하는 요청 방법에 대한 정보를 얻을 수 있습니다. 관련 응답 헤더는 지원되는 메소드 허용입니다. 또한 CORS에서 프리 플라이트 요청으로 사용되어 서버에 실제 요청 방법을 알리고 사용자 지정 헤더에 대해 묻습니다.
  8. HEAD : 응답 헤더 만 반환합니다.
  9. CONNECT : 브라우저가 프록시와 통신하고 최종 URI가 https : //로 시작하는 것을 알고있을 때 브라우저에서 사용합니다. CONNECT의 의도는 엔드 투 엔드 암호화 된 TLS 세션을 허용하여 데이터를 프록시에서 읽을 수 없도록하는 것입니다.

답변

PUT은 특정 URI에 항목을 “업로드”하거나 해당 URI에 이미있는 내용을 덮어 쓰는 방법입니다.

반면에 POST는 주어진 URI에 관련 데이터를 제출하는 방법입니다.

HTTP RFC를 참조하십시오


답변

내가 아는 한 PUT은 주로 레코드를 업데이트하는 데 사용됩니다.

  1. POST-문서 또는 기타 리소스를 만들려면

  2. PUT-작성된 문서 또는 기타 자원을 업데이트합니다.

그러나 PUT은 일반적으로 기존 레코드가있는 경우 기존 레코드를 ‘대체’하고 존재하지 않는 경우 작성합니다.


답변

다른 사람들은 이미 훌륭한 답변을 게시했습니다 .POST보다 훨씬 자주 POST를 다루는 대부분의 언어, 프레임 워크 및 사용 사례를 추가하고 싶었습니다. PUT, DELETE 등이 기본적으로 사소한 질문입니다.