Actualización de recursos existentes (PATCH)
Esta página muestra ejemplos de solicitudes PATCH para el módulo JSON:API.
Habilitar la operación de actualización
Visita /admin/config/services/jsonapi
y marca la opción "Aceptar todas las operaciones de crear, leer, actualizar y eliminar de JSON:API".
Autenticación
Típicamente, se utiliza algún tipo de autenticación para las solicitudes PATCH. Todos los ejemplos a continuación usan Autenticación Básica. Habilita el módulo de Autenticación Básica HTTP, asigna el permiso correspondiente al usuario (y al rol) de la API y agrega el nombre de usuario y contraseña codificados en el encabezado 'Authorization' de la solicitud.
El encabezado de ejemplo en esta página requiere un usuario de Drupal llamado 'api' con contraseña 'api'. Este usuario debe tener permiso para actualizar el contenido solicitado.
Encabezados
Los siguientes encabezados son obligatorios en todas las solicitudes PATCH para obtener una solicitud y respuesta JSON:API adecuadas.
- Accept: application/vnd.api+json
- Content-Type: application/vnd.api+json
El siguiente encabezado es necesario para que los ejemplos funcionen:
- Authorization: Basic VALUE
Puedes obtener el VALUE anterior en tus aplicaciones usando la línea de comandos:
echo -n "USUARIO:CONTRASEÑA" | base64 -w0
Usa el valor retornado después de BASIC. En este ejemplo, las credenciales api:api devuelven YXBpOmFwaQ==, así que el encabezado será:
Authorization: Basic YXBpOmFwaQ==
Solicitud PATCH básica
URL: http://example.com/jsonapi/node/article/{{article_uuid}}
Cuerpo de la solicitud
{
"data": {
"type": "node--article",
"id": "{{article_uuid}}",
"attributes": {
"title": "Mi título actualizado"
}
}
}
El "id" es obligatorio. Agrega los atributos que deben ser actualizados.
Respuesta
Respuesta HTTP 200. El cuerpo de la respuesta contiene la respuesta JsonApi de la entidad actualizada.
PATCH con más atributos
URL: http://example.com/jsonapi/node/article/{{article_uuid}}
Cuerpo de la solicitud
{
"data": {
"type": "node--article",
"id": "{{article_uuid}}",
"attributes": {
"title": "Mi título actualizado",
"body": {
"value": "Texto del cuerpo actualizado",
"format": "plain_text",
"summary": "Resumen actualizado"
}
},
"relationships": {
"uid": {
"data": {
"type": "user--user",
"id": "{{user_uuid}}"
}
}
}
}
}
Respuesta
Respuesta HTTP 200. El cuerpo de la respuesta contiene el body, resumen y autor actualizados de la entidad.
PATCH para eliminar una relación
{
"data": {
"type": "node--article",
"id": "{{article_uuid}}",
"attributes": {
"title": "Mi título actualizado",
"body": {
"value": "Texto del cuerpo actualizado",
"format": "plain_text",
"summary": "Resumen actualizado"
}
},
"relationships": {
"my_entity_reference_field": {
"data": {},
}
}
}
}
Respuesta
Respuesta HTTP 200. El cuerpo de la respuesta contiene el body, resumen y la referencia de entidad eliminada.
Artículo de la Documentación de Drupal.