Postman Chrome : 양식 데이터, x-www-form-urlencoded와 raw의 차이점은 무엇입니까?


222

웹 서비스 테스트에 Postman Chrome 확장 프로그램을 사용하고 있습니다.

데이터 입력에 사용할 수있는 세 가지 옵션이 있습니다.

rawJSON을 보내는 것 같습니다 .

어떤 다른 둘 사이의 차이는, form-data그리고 x-www-form-urlencoded?


11
오늘 현재 우편 배달부 도구-에 데이터를 게시하는 4 번째 옵션이 있습니다 binary.
RBT

답변:


237

이들은 W3C에 의해 정의 된 다른 양식 컨텐츠 유형입니다. 간단한 텍스트 / ASCII 데이터를 보내려면 x-www-form-urlencoded 가 작동합니다. 이것이 기본값입니다.

그러나 비 ASCII 텍스트 또는 큰 이진 데이터를 보내야하는 경우 양식 데이터 가 적합합니다.

일반 텍스트 나 JSON 또는 다른 종류의 문자열을 보내려면 Raw 를 사용할 수 있습니다 . 이름에서 알 수 있듯이 Postman은 원시 문자열 데이터를 수정없이 그대로 보냅니다. 드롭 다운에서 컨텐츠 유형 헤더를 사용하여 전송중인 데이터 유형을 설정할 수 있습니다.

비디오 / 오디오 파일, 이미지 또는 기타 이진 데이터 파일과 같이 텍스트가 아닌 데이터를 요청에 첨부하려는 경우 이진을 사용할 수 있습니다.

자세한 내용은이 링크를 참조하십시오. HTML 문서의 양식


바이너리는 어떻습니까?
RBT

4 개의 텍스트 필드와 1 개의 파일 업로드 필드가있는 양식이 있는데 우편 배달부 에서이 5 개의 필드 값을 제출하는 데 사용할 옵션 (form-data 또는 x-www-form-urlencoded)을 제안하십시오. 미리 감사드립니다.
Kamlesh 2014

@Kamlesh, 답변이 늦어 죄송합니다. Postman의 양식 데이터 키 필드에는 텍스트 필드인지 파일인지 선택할 수있는 드롭 다운이 있습니다. 파일로 설정 한 다음 본문에 첨부 할 파일을 찾아 볼 수 있습니다. 희망이 도움이됩니다.
Basant Singh

87

더 나은 설명 : 우편 배달부 문서

요청 본문

요청을 구성하는 동안 요청 본문 편집기를 많이 다루게됩니다. Postman을 사용하면 거의 모든 종류의 HTTP 요청을 보낼 수 있습니다 (전송할 수없는 경우 알려주세요!). 본문 편집기는 4 개의 영역으로 구분되며 본문 유형에 따라 다른 컨트롤이 있습니다.

양식 데이터

multipart / form-data는 웹 양식이 데이터를 전송하는 데 사용하는 기본 인코딩입니다. 웹 사이트에서 양식을 작성하여 제출하는 것을 시뮬레이션합니다. 양식 데이터 편집기를 사용하면 데이터의 키 / 값 쌍 (키-값 편집기 사용)을 설정할 수 있습니다. 파일을 키에 첨부 할 수도 있습니다. HTML5 스펙의 제한으로 인해 파일은 히스토리 또는 콜렉션에 저장되지 않습니다. 요청을 보낼 때 파일을 다시 선택해야합니다.

urlencoded

이 인코딩은 URL 매개 변수에 사용 된 것과 동일합니다. 키 / 값 쌍만 입력하면 Postman이 키와 값을 올바르게 인코딩합니다. 이 인코딩 모드를 통해 파일을 업로드 할 수 없습니다. 양식 데이터와 urlencoded간에 혼동이있을 수 있으므로 먼저 API를 확인하십시오.

노골적인

원시 요청에는 모든 것이 포함될 수 있습니다. Postman은 환경 변수 교체를 제외하고 원시 편집기에 입력 한 문자열을 건드리지 않습니다. 텍스트 영역에 넣은 내용이 요청과 함께 전송됩니다. raw 편집기를 사용하면 raw body와 함께 보내야하는 올바른 헤더와 함께 형식 유형을 설정할 수 있습니다. Content-Type 헤더를 수동으로 설정할 수도 있습니다. 일반적으로 여기에서 XML 또는 JSON 데이터를 보냅니다.

이진

이진 데이터를 사용하면 Postman에 입력 할 수없는 것을 보낼 수 있습니다. 예를 들어, 이미지, 오디오 또는 비디오 파일. 텍스트 파일도 보낼 수 있습니다. 양식 데이터 섹션에서 앞서 언급 한 것처럼 기록 또는 컬렉션을 통해 요청을로드하는 경우 파일을 다시 첨부해야합니다.

최신 정보

VKK 에서 지적한 것처럼 WHATWG 사양에 따르면 urlencoded는 양식의 기본 인코딩 유형입니다.

이러한 속성의 유효하지 않은 기본값은 application / x-www-form-urlencoded 상태입니다. enctype 속성의 결 측값 기본값은 application / x-www-form-urlencoded 상태이기도합니다.


5
우편 배달부 문서가 잘못되었습니다. html.spec.whatwg.org/multipage/…에 있는 WHATWG의 HTML5 사양 은 양식 요소의 enctype 속성에 대한 기본값 "application / x-www-form-urlencoded"를 명확하게 정의합니다. 다시 말해 "application / x-www-form-urlencoded"는 웹 양식이 multipart / form-data가 아니라 데이터를 전송하는 데 사용하는 기본 인코딩 (HTTP 용어 Content-Type)입니다. multipart / form-data의 Content Type으로 양식 제출시 HTTP 게시 요청을 보내려면이를 명시 적으로 enctype 값으로 지정해야합니다.
VKK

헤더 와 함께 전송 된 양식 데이터 (Postman UI에서 키-값 쌍으로 입력 )의 차이점은 무엇입니까 Content-Type: application/json? 및 원시 데이터는 같은 JSON로 입력 {foo: bar}동일한 가진 Content-Type: application/json헤더?
Inigo

양식 데이터를 키 값 쌍으로 사용하면 content-type은 헤더를 지정할 때도 다중 부분 양식 데이터이며 원시 콘텐츠 유형은 텍스트 또는 헤더에 지정한 내용입니다.
avck

20

멀티 파트 / 폼 데이터

노트. 이전 버전과의 호환성 문제, "멀티 파트 / 양식 데이터"와 기타 콘텐츠 유형 간의 관계, 성능 문제 등 파일 업로드에 대한 추가 정보는 RFC2388 을 참조하십시오 .

양식의 보안 문제에 대한 정보는 부록을 참조하십시오.

"application / x-www-form-urlencoded"컨텐츠 유형은 ASCII가 아닌 문자를 포함하는 텍스트 또는 대량의 이진 데이터를 전송하는 데 비효율적입니다. 컨텐츠 유형 "multipart / form-data"는 파일, 비 ASCII 데이터 및 2 진 데이터를 포함하는 양식을 제출하는 데 사용해야합니다.

컨텐트 유형 "multipart / form-data"는 RFC2045에 요약 된 모든 멀티 파트 MIME 데이터 스트림의 규칙을 따릅니다 . "multipart / form-data"의 정의는 [IANA] 레지스트리에서 사용할 수 있습니다.

"multipart / form-data"메시지는 각각 성공적인 제어를 나타내는 일련의 부분을 포함합니다. 부품은 해당 제어가 문서 스트림에 나타나는 것과 동일한 순서로 처리 에이전트로 전송됩니다. 데이터에서 부품 경계가 발생해서는 안됩니다. 이 작업을 수행하는 방법은이 사양의 범위를 벗어납니다.

모든 멀티 파트 MIME 유형과 마찬가지로 각 파트에는 기본적으로 "text / plain"인 "Content-Type"헤더 옵션이 있습니다. 사용자 에이전트는 "charset"매개 변수와 함께 "Content-Type"헤더를 제공해야합니다.

application / x-www-form-urlencoded

이것이 기본 컨텐츠 유형입니다. 이 컨텐츠 유형으로 제출 된 양식은 다음과 같이 인코딩되어야합니다.

제어 이름 및 값이 이스케이프됩니다. 공백 문자는 +', and then reserved characters are escaped as described in [RFC1738], section 2.2: Non-alphanumeric characters are replaced by% HH ', 퍼센트 부호 및 문자의 ASCII 코드를 나타내는 두 개의 16 진수 로 대체됩니다 . 줄 바꿈은 "CR LF"쌍으로 표시됩니다 (즉, %0D%0A'). The control names/values are listed in the order they appear in the document. The name is separated from the value by= '와 이름 / 값 쌍은`&'로 서로 구분됩니다.

application/x-www-form-urlencoded서버로 전송되는 HTTP 메시지의 본문은 본질적으로 하나의 거대한 쿼리 문자열입니다. 이름 / 값 쌍은 앰퍼샌드 (&)로 구분되고 이름은 등호 (=)로 값과 구분됩니다. 이에 대한 예는 다음과 같습니다.

MyVariableOne=ValueOne&MyVariableTwo=ValueTwo

콘텐츠 형식 "응용 프로그램 / 형식-urlencoded로는 X-www가" 비 ASCII 문자가 포함 된 이진 데이터 나 텍스트의 많은 양을 전송하는 비효율적이다. 컨텐츠 유형 "multipart / form-data"는 파일, 비 ASCII 데이터 및 2 진 데이터를 포함하는 양식을 제출하는 데 사용해야합니다.


15

다음은 Postman이 요청에서 전달한 원시 텍스트를 확인하기위한 보충 예제입니다. Postman 콘솔을 열어서이를 확인할 수 있습니다.

여기에 이미지 설명을 입력하십시오

양식 데이터

헤더

content-type: multipart/form-data; boundary=--------------------------590299136414163472038474

key1=value1key2=value2

x-www-form-urlencoded

헤더

Content-Type: application/x-www-form-urlencoded

key1=value1&key2=value2

원시 텍스트 / 일반

헤더

Content-Type: text/plain

This is some text.

원시 JSON

헤더

Content-Type: application/json

{"key1":"value1","key2":"value2"}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.