POST
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Please help us by answering a few questions.
HTTP POST
메서드는 서버로 데이터를 전송합니다. 요청 본문의 유형은 Content-Type
헤더로 나타냅니다.
PUT
과 POST
의 차이는 멱등성으로, PUT
은 멱등성을 가집니다. PUT
은 한 번을 보내도, 여러 번을 연속으로 보내도 같은 효과를 보입니다. 즉, 부수 효과(side effect)가 없습니다.
POST
요청은 보통 HTML 양식을 통해 서버에 전송하며, 서버에 변경사항을 만듭니다. 이 경우의 콘텐츠 유형(Content-Type
)은 <form>
요소의 enctype
특성이나 <input>
, <button>
요소의 formenctype
특성 안에 적당한 문자열을 넣어 결정합니다.
application/x-www-form-urlencoded
: &으로 분리되고, "=" 기호로 값과 키를 연결하는 key-value tuple로 인코딩되는 값입니다. 영어 알파벳이 아닌 문자들은 percent encoded 으로 인코딩됩니다. 따라서, 이 content type은 바이너리 데이터에 사용하기에는 적절치 않습니다. (바이너리 데이터에는 usemultipart/form-data
를 사용해 주세요.)_multipart/form-data
text/plain
POST
요청을 HTML 양식 외의 다른 방법(XMLHttpRequest
등)으로 전송할 땐 요청의 본문이 어떤 형태도 취할 수 있습니다. HTTP 1.1 규격에 정의된 바와 같이, POST
는 다음의 기능을 포함하는 균일한 메서드를 허용하도록 설계되었습니다.
- 기존 리소스에 주석달기
- 게시판, 뉴스 그룹, 메일링 리스트나 이와 유사한 시스템에 글 올리기
- 회원가입 모달로 새로운 사용자 추가하기
- 양식 전송 결과 등 데이터 블록을 데이터 처리 프로세스에 보내기
- 이어붙이기 연산을 통한 데이터베이스 확장
구문
POST /index.html
예제
다음은 application/x-www-form-urlencoded
콘텐츠 유형을 사용하는 간단한 형태의 양식 제출 예시입니다.
POST / HTTP/1.1
Host: foo.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 13
say=Hi&to=Mom
multipart/form-data
콘텐츠 유형을 사용하는 예시입니다.
POST /test.html HTTP/1.1
Host: example.org
Content-Type: multipart/form-data;boundary="boundary"
--boundary
Content-Disposition: form-data; name="field1"
value1
--boundary
Content-Disposition: form-data; name="field2"; filename="example.txt"
value2
--boundary--
명세
Specification |
---|
HTTP Semantics # POST |