application / json과 application / x-www-form-urlencoded의 차이점


답변:


187

첫 번째 경우는 웹 서버에 다음과 같이 JSON 데이터를 게시하고 있다는 것입니다.

{ Name : 'John Smith', Age: 23}

두 번째 옵션은 웹 서버에 다음과 같이 URL의 매개 변수를 인코딩 할 것임을 알리는 것입니다.

Name=John+Smith&Age=23

17
서버쪽에 어떤 영향이 있습니까? x-www-form-urlencoded투표와 같은 AJAX 요청에 stackoverflow 및 Twitter 사용 사이트 가 JSON있습니다. 답장은 입니다. 대칭 요청 / 응답 쌍, 즉 두 JSON을 갖는 것이 더 낫다고 생각합니다.
사용자

@buffer 또한 대칭 질문에 대한 답변을 알고 싶습니다.
Adam Johns

1
@AdamJohns :이 블로그는 "왜"에 정확하게 답변하지는 않지만 읽을만한 가치가 있습니다 : homakov.blogspot.in/2012/06/…
사용자

21
@buffer 내가 이해하는 것은 contentType이 전송되는 데이터가 더 복잡하고 많은 계층 구조를 포함 할 때 도움이되므로 JSON을 사용하는 것입니다. 반면 인코딩 된 양식은 많은 코드없이 백엔드에서 읽을 수있는 간단한 매개 변수를 URL로 보내는 것이 좋습니다. .. 이것이 왜 그 부분에 대한 답이라고 생각합니다.
Ankit Srivastava

@Medorator 최근 코멘트입니다. 예를 들어, 복잡한 JSON 객체를 객체 배열과 함께 보낼 때 application/x-www-form-urlencoded서버를 혼동하면 (필자의 경우 Poison을 사용하는 Ellixir) 혼동하여 객체의 부적절한 구문 분석이 발생합니다 (중간 배열을 변환했습니다) 목록 대신 객체를지도에 표시). application/json이 경우 사용 이 올바른 선택이어야합니다.
xji

6

webRequest.ContentType = "application / x-www-form-urlencoded";

  1. 어디 않는 응용 프로그램 / x-www-form-urlencoded를 이름의에서 온?

    HTTP GET 요청 을 보내면 다음과 같이 쿼리 매개 변수를 사용할 수 있습니다.

    http://example.com/path/to/page? name = ferret & color = purple

    필드의 내용은 쿼리 문자열로 인코딩됩니다. application/x-www-form- urlencoded의 이름은 이전 URL 쿼리 매개 변수에서 온 그러나 쿼리 매개 변수는 곳 요청의 몸 대신 URL입니다.

    전체 양식 데이터는 긴 쿼리 문자열로 전송됩니다. 쿼리 문자열에는 & 문자로 구분 된 이름-값 쌍이 포함 됩니다.

    예 : field1 = value1 & field2 = value2

  2. 단순 이라고하는 간단한 요청 일 수 있습니다 . 프리 플라이트 검사를 트리거하지 마십시오.

    간단한 요청에는 몇 가지 속성이 있어야합니다. 자세한 내용 은 여기 를 참조하십시오. 그중 하나는 간단한 요청에 대해 Content-Type 헤더에 허용되는 값이 세 개뿐이라는 것입니다

    • application / x-www-form-urlencoded
    • 멀티 파트 / 폼 데이터
    • 텍스트 / 일반

3. 대부분 평평한 매개 변수 트리의 경우 application / x-www-form-urlencoded가 시도되고 테스트됩니다.

request.ContentType = "application / json; charset = utf-8";

  1. 데이터는 json 형식입니다.

가장 인기있는 npm HTTP 라이브러리 중 하나 인 axiossuperagent 는 기본적으로 JSON 본문과 함께 작동합니다.

{
  "id": 1,
  "name": "Foo",
  "price": 123,
  "tags": [
    "Bar",
    "Eek"
  ],
  "stock": {
    "warehouse": 300,
    "retail": 20
  }
}
  1. "application / json" Content-Type은 프리 플라이트 요청 중 하나입니다 .

이제 요청이 단순 요청이 아닌 경우 브라우저 는 원래 요청을 보내는 것이 안전한지 여부를 확인하기 위해 OPTIONS 메소드로 원래 요청 전에 HTTP 요청을 자동으로 보냅니다 . 괜찮 으면 실제 요청을 보내십시오. 자세한 내용 은 여기 를 참조하십시오.

  1. application / json 은 초보자에게 친숙합니다. URL 인코딩 배열은 악몽이 될 수 있습니다!
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.