Content-Type

5368 ワード

RestAPIは、通常、JSONタイプの要求であり、要求を受信する.したがってcontent-typeは当然アプリケーション/jsonタイプだと思っている人が多いが、資料を検索するとそうではないことが分かった.
htmlフォームタグを使用してPOSTまたはjQueryのajaxなどのリクエストを要求する場合、デフォルトのコンテンツタイプは「アプリケーション/json」ではなく「アプリケーション/x-www-form-urlcoded」です.
リクエストをクライアントからserverに次のコードで送信してみます.
コンテンツ-タイプは、クライアントからサーバに送信されるデータのフォーマットを決定します.
const data = {
    "name": "kim",
    "age": 29
}

axios({
    method: 'post',
    url: 'https://localhost:8080',
    headers: {
        'Content-Type': ....
    },
    data: data
}).then((res) => {
    // handle success
}).catch((err) => {
    // handle error
}).then(() => {
    // always
})
  • application/x-www-form-urlencoded :
  • x-www-form-urlcodedの場合、以下に示すようにkey 1=value 1&key 2=value 2の形式で要求されます.
    POST / HTTP/1.1
    Host: localhost
    Content-Type: application/x-www-form-urlencoded
    
    name=kim&age=29
  • application/json :
  • jsonの場合、次のように要求がjson形式で送信されることがわかります.
    POST / HTTP/1.1
    Host: localhost
    Content-Type: application/json
    
    {
      "name":"kim",
      "age":"29"
    }
    headers: { ‘content-Type': 'application/json' }
    headers: { accept: 'application/json' }
    この2つの方法で使えるので、具体的な違いが気になります.

    二つの違いは?


    Content-TypeヘッダとAcceptヘッダは、いずれもデータ型(MIME)を扱うヘッダであるが、Content-Typeヘッダは、現在伝送されているデータがどのようなタイプであるかを示しており、Acceptヘッダは、クライアントがサーバにデータを送信する際に、このようなタイプの送信にデータを加工することを要求していると理解できる.
    ソース