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です。