Mise à jour des ressources existantes (PATCH)
Cette page montre des exemples de requêtes PATCH pour le module JSON:API.
Activation de l’opération de mise à jour
Rendez-vous sur /admin/config/services/jsonapi
et cochez l’option « Accepter toutes les opérations JSON:API de création, lecture, mise à jour et suppression. »
Authentification
Habituellement, une forme d’authentification est utilisée pour les requêtes PATCH. Les exemples ci-dessous utilisent tous l’authentification basique (Basic Authentication). Activez le module HTTP Basic Authentication, attribuez la permission à l’utilisateur API (et au rôle), puis ajoutez le nom d’utilisateur et le mot de passe encodés dans l’en-tête 'Authorization' de la requête.
L’exemple d’en-tête sur cette page nécessite un utilisateur Drupal nommé « api » avec le mot de passe « api ». Cet utilisateur doit avoir la permission de modifier le contenu demandé.
En-têtes
Les en-têtes suivants sont obligatoires sur toutes les requêtes PATCH pour obtenir une requête et une réponse JSON:API correctes :
- Accept: application/vnd.api+json
- Content-Type: application/vnd.api+json
L’en-tête suivant est nécessaire pour que les exemples fonctionnent :
- Authorization: Basic VALEUR
Vous pouvez obtenir la VALEUR ci-dessus dans vos applications avec la ligne de commande :
echo -n "NOM_UTILISATEUR:MOT_DE_PASSE" | base64 -w0
Utilisez la valeur retournée après BASIC. Dans cet exemple, les identifiants api:api renvoient YXBpOmFwaQ==, donc l’en-tête sera :
Authorization: Basic YXBpOmFwaQ==
Requête PATCH basique
URL : http://example.com/jsonapi/node/article/{{article_uuid}}
Corps de la requête
{
"data": {
"type": "node--article",
"id": "{{article_uuid}}",
"attributes": {
"title": "Mon titre mis à jour"
}
}
}
L’"id" est obligatoire. Ajoutez les attributs à mettre à jour.
Réponse
Réponse HTTP 200. Le corps de la réponse contient la réponse JsonAPI de l’entité mise à jour.
PATCH avec plus d’attributs
URL : http://example.com/jsonapi/node/article/{{article_uuid}}
Corps de la requête
{
"data": {
"type": "node--article",
"id": "{{article_uuid}}",
"attributes": {
"title": "Mon titre mis à jour",
"body": {
"value": "Texte du corps mis à jour",
"format": "plain_text",
"summary": "Résumé mis à jour"
}
},
"relationships": {
"uid": {
"data": {
"type": "user--user",
"id": "{{user_uuid}}"
}
}
}
}
}
Réponse
Réponse HTTP 200. Le corps de la réponse avec le corps, résumé et auteur mis à jour.
PATCH pour supprimer une relation
{
"data": {
"type": "node--article",
"id": "{{article_uuid}}",
"attributes": {
"title": "Mon titre mis à jour",
"body": {
"value": "Texte du corps mis à jour",
"format": "plain_text",
"summary": "Résumé mis à jour"
}
},
"relationships": {
"my_entity_reference_field": {
"data": {}
}
}
}
}
Réponse
Réponse HTTP 200. Le corps de la réponse avec le corps, résumé mis à jour et la référence d’entité supprimée.
Article extrait de la documentation Drupal.