Scroll
更新现有资源(PATCH)
此页面展示了 JSON:API 模块 的 PATCH 请求示例。
启用更新操作
访问 /admin/config/services/jsonapi
并勾选 “接受所有 JSON:API 创建、读取、更新和删除操作” 选项。
认证
通常 PATCH 请求需要某种形式的认证。以下示例均使用基本认证(Basic Authentication)。启用 HTTP Basic Authentication 模块,为 API 用户(及其角色)设置权限,并在请求头的 'Authorization' 中设置编码后的用户名和密码。
此页面上的示例请求头需要一个用户名为 'api'、密码为 'api' 的 Drupal 用户。该用户必须具有更新所请求内容的权限。
请求头
以下请求头在所有 PATCH 请求中都是必须的,以确保 JSON:API 请求和响应的正确性。
- 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": "我的更新标题"
}
}
}
“id” 是必填项。添加需要更新的属性。
响应
HTTP 200 响应。响应体包含已更新实体的 JsonApi 响应。
PATCH 带更多属性
URL: http://example.com/jsonapi/node/article/{{article_uuid}}
请求体
{
"data": {
"type": "node--article",
"id": "{{article_uuid}}",
"attributes": {
"title": "我的更新标题",
"body": {
"value": "更新后的正文内容",
"format": "plain_text",
"summary": "更新后的摘要"
}
},
"relationships": {
"uid": {
"data": {
"type": "user--user",
"id": "{{user_uuid}}"
}
}
}
}
}
响应
HTTP 200 响应。响应体包含已更新的正文、摘要和作者。
PATCH 删除关系字段
{
"data": {
"type": "node--article",
"id": "{{article_uuid}}",
"attributes": {
"title": "我的更新标题",
"body": {
"value": "更新后的正文内容",
"format": "plain_text",
"summary": "更新后的摘要"
}
},
"relationships": {
"my_entity_reference_field": {
"data": {},
}
}
}
}
响应
HTTP 200 响应。响应体包含已更新的正文、摘要,并且实体引用字段已被移除。
文章来源:Drupal 文档。