JSON:API仕様のContent-Type
JSON:API(jsonapi.org)準拠リクエスト用のContent-Typeヘッダーを設定します。application/vnd.api+jsonメディアタイプとその要件を解説します。
JSON APIs
詳細な説明
JSON:APIメディアタイプ
JSON:API仕様(jsonapi.org)は、汎用JSONとJSON:APIペイロードを区別するための独自のメディアタイプを定義しています。
ヘッダー値
Content-Type: application/vnd.api+json
重要なルール
JSON:API仕様はContent-Typeヘッダーに関して厳格な要件があります:
charsetパラメータなし:クライアントとサーバーは
application/vnd.api+jsonを使用する際、Content-Typeヘッダーにメディアタイプパラメータ(charsetなど)を含めてはいけません。パラメータ付きのリクエストは415 Unsupported Media Typeレスポンスで拒否しなければなりません。Acceptヘッダー:クライアントはJSON:APIレスポンスを期待することを示すために
Accept: application/vnd.api+jsonも設定すべきです。拡張ネゴシエーション:JSON:API 1.1では
extとprofileパラメータによる拡張ネゴシエーションが導入されましたが、これらが唯一許可されたパラメータです。
リクエスト例
{
"data": {
"type": "articles",
"attributes": {
"title": "New Article",
"body": "Article content..."
},
"relationships": {
"author": {
"data": { "type": "people", "id": "9" }
}
}
}
}
curlの例
curl -X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Accept: application/vnd.api+json" \
-d '{"data":{"type":"articles","attributes":{"title":"Hello"}}}' \
https://api.example.com/articles
ユースケース
Ember Data、JSONAPI::Resources(Ruby)、Laravel JSON:APIなど、JSON:API仕様に従うAPIの構築や利用時に使用します。