JSON APIのContent-Type(UTF-8)

標準的なJSON APIリクエストにUTF-8 charsetを含むContent-Typeヘッダーを設定する方法を解説します。application/jsonの使い方とcharsetが必要な場面をカバーします。

JSON APIs

詳細な説明

application/json; charset=utf-8

モダンなREST APIで最も一般的なContent-Typeはapplication/jsonです。charset=utf-8を含めると、JSONペイロードがUTF-8でエンコードされていることを明示的に宣言します。

ヘッダー値

Content-Type: application/json; charset=utf-8

なぜUTF-8なのか?

RFC 8259(JSON仕様)は、閉じたエコシステムの一部でないシステム間で交換されるJSONテキストはUTF-8でエンコードしなければならないと規定しています。ほとんどのJSONライブラリはデフォルトでUTF-8を使用しますが、charsetパラメータを追加することでエンコーディングが明確になり、プロキシ、ゲートウェイ、レガシーシステムとの連携時の曖昧さを回避できます。

charsetを省略する場合

クライアントとサーバーの両方がモダンでJSONのみの場合、charsetパラメータなしのapplication/jsonだけで送信できることが多いです。仕様ではUTF-8がデフォルトと見なされます。ただし、含めても無害であり、中間者がペイロードを検査や変換する際の微妙なバグを防ぐことができます。

出力フォーマット

生のヘッダー:

Content-Type: application/json; charset=utf-8

curl:

curl -H "Content-Type: application/json; charset=utf-8" -d '{"key":"value"}' https://api.example.com

fetch():

fetch(url, {
  method: "POST",
  headers: { "Content-Type": "application/json; charset=utf-8" },
  body: JSON.stringify({ key: "value" })
});

ユースケース

REST API、webhookエンドポイント、JSONを期待するバックエンドサービスにJSONペイロードを送信する際に使用します。ほぼすべてのモダンなWeb API統合における定番のContent-Typeです。

試してみる — Content-Type Header Builder

フルツールを開く