既存リソースの更新(PATCH)
このページでは、JSON:APIモジュールのPATCHリクエストの例を示します。
更新操作の有効化
/admin/config/services/jsonapiにアクセスし、
「Accept all JSON:API create, read, update, and delete operations.(すべてのJSON:APIの作成、読み取り、更新、削除操作を受け入れる)」オプションをオンにします。

認証
通常、PATCHリクエストには何らかの認証が使用されます。以下の例はすべてBasic認証を使用しています。HTTP Basic Authenticationモジュールを有効にし、APIユーザー(およびロール)のパーミッションを設定し、エンコードされたユーザー名とパスワードを「Authorization」リクエストヘッダーに追加します。
このページのヘッダーの例では、パスワード「api」のDrupalユーザー「api」が必要です。このユーザーには、要求されたコンテンツを更新するパーミッションが必要です。
ヘッダー
適切なJSON:APIリクエストとレスポンスを得るには、次のヘッダーがすべてのPATCHリクエストで必須です。
- Accept: application/vnd.api+json
- Content-Type:application/vnd.api+json
例を機能させるには、次のヘッダーが必要です。
- Authorization:Basic VALUE
アプリケーションでコマンドラインを使用して、上記のVALUEを取得できます。
echo -n "USERNAME:PASSWORD" | base64 -w0
BASICの後に上記の返された値を使用します。この例では、api:apiの資格情報はYXBpOmFwaQ==を返すため、ヘッダーは次のようになります。
Authorization:Basic YXBpOmFwaQ==
基本的なPATCHリクエスト
URL: http://example.com/jsonapi/node/article/{{article_uuid}}
リクエストボディ
{
"data": {
"type": "node--article",
"id": "{{article_uuid}}",
"attributes": {
"title": "My updated title"
}
}
}
「id」は必須です。更新する属性を追加します。
レスポンス
HTTP 200レスポンス。更新されたエンティティのJSON:APIレスポンスを含むレスポンスボディ。
より多くの属性を含むPATCH
URL: http://example.com/jsonapi/node/article/{{article_uuid}}
リクエストボディ
{
"data": {
"type": "node--article",
"id": "{{article_uuid}}",
"attributes": {
"title": "My updated title",
"body": {
"value": "Updated body text",
"format": "plain_text",
"summary": "Updated summary"
}
},
"relationships": {
"uid": {
"data": {
"type": "user--user",
"id": "{{user_uuid}}"
}
}
}
}
}
レスポンス
HTTP 200レスポンス。更新された本文、サマリー、および著者が更新されたエンティティを含むレスポンスボディ。
リレーションシップを削除するPATCH
{
"data": {
"type": "node--article",
"id": "{{article_uuid}}",
"attributes": {
"title": "My updated title",
"body": {
"value": "Updated body text",
"format": "plain_text",
"summary": "Updated summary"
}
},
"relationships": {
"my_entity_reference_field": {
"data": {},
}
}
}
}
レスポンス
HTTP 200レスポンス。更新された本文、サマリー、および削除されたエンティティ参照を含むレスポンスボディ。
Drupalドキュメントからの記事です。