Обновление существующих ресурсов (PATCH)
На этой странице приведены примеры PATCH-запросов для модуля JSON:API.
Включение операции обновления
Перейдите в /admin/config/services/jsonapi
и включите опцию «Accept all JSON:API create, read, update, and delete operations».
Аутентификация
Обычно PATCH-запросы требуют аутентификации. Все примеры ниже используют Basic Authentication. Включите модуль basic_auth
, настройте права пользователя и передайте логин и пароль в заголовке Authorization
.
Пример использует пользователя «api» с паролем «api». Этот пользователь должен иметь права на обновление сущности.
Заголовки
Обязательные заголовки для всех PATCH-запросов:
Accept: application/vnd.api+json
Content-Type: application/vnd.api+json
А также заголовок авторизации:
Authorization: Basic YXBpOmFwaQ==
Чтобы получить значение для Authorization
, используйте команду:
echo -n "USERNAME:PASSWORD" | base64 -w0
Простой PATCH-запрос
URL: http://example.com/jsonapi/node/article/{{article_uuid}}
Тело запроса
{
"data": {
"type": "node--article",
"id": "{{article_uuid}}",
"attributes": {
"title": "My updated title"
}
}
}
Поле id
обязательно. Укажите только те attributes
, которые нужно обновить.
Ответ
HTTP 200. Ответ содержит обновлённую сущность.
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 для удаления связи (entity reference)
Тело запроса
{
"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 Documentation.