Aggiornamento delle risorse esistenti (PATCH)
Questa pagina mostra esempi di richieste PATCH per il modulo JSON:API.
Abilitare l’operazione di aggiornamento
Visita /admin/config/services/jsonapi
e seleziona l’opzione "Accetta tutte le operazioni di creazione, lettura, aggiornamento ed eliminazione JSON:API".
Autenticazione
Di solito, per le richieste PATCH viene utilizzata una forma di autenticazione. Gli esempi seguenti utilizzano tutti l’Autenticazione di Base. Abilita il modulo HTTP Basic Authentication, imposta il permesso per l’utente (e il ruolo) dell’API e aggiungi il nome utente e la password codificati nell’intestazione della richiesta 'Authorization'.
L’intestazione di esempio in questa pagina richiede un utente Drupal 'api' con password 'api'. Questo utente deve avere il permesso di aggiornare il contenuto richiesto.
Intestazioni
Le seguenti intestazioni sono obbligatorie in tutte le richieste PATCH per ottenere una corretta richiesta e risposta JSON:API.
- Accept: application/vnd.api+json
- Content-Type:application/vnd.api+json
L’intestazione seguente è necessaria affinché gli esempi funzionino:
- Authorization:Basic VALUE
Puoi ottenere il valore VALUE sopra nelle tue applicazioni usando la riga di comando:
echo -n "USERNAME:PASSWORD" | base64 -w0
Usa il valore restituito dopo BASIC. In questo esempio, le credenziali api:api restituiscono YXBpOmFwaQ==, quindi l’intestazione sarà:
Authorization:Basic YXBpOmFwaQ==
Richiesta PATCH di base
URL: http://example.com/jsonapi/node/article/{{article_uuid}}
Corpo della richiesta
{
"data": {
"type": "node--article",
"id": "{{article_uuid}}",
"attributes": {
"title": "Il mio titolo aggiornato"
}
}
}
L’"id" è obbligatorio. Aggiungi gli attributi che devono essere aggiornati.
Risposta
Risposta HTTP 200. Il corpo della risposta con la risposta JsonApi dell’entità aggiornata.
PATCH con più attributi
URL: http://example.com/jsonapi/node/article/{{article_uuid}}
Corpo della richiesta
{
"data": {
"type": "node--article",
"id": "{{article_uuid}}",
"attributes": {
"title": "Il mio titolo aggiornato",
"body": {
"value": "Testo del corpo aggiornato",
"format": "plain_text",
"summary": "Sommario aggiornato"
}
},
"relationships": {
"uid": {
"data": {
"type": "user--user",
"id": "{{user_uuid}}"
}
}
}
}
}
Risposta
Risposta HTTP 200. Il corpo della risposta con corpo, sommario e autore aggiornati nell’entità.
PATCH per rimuovere una relazione
{
"data": {
"type": "node--article",
"id": "{{article_uuid}}",
"attributes": {
"title": "Il mio titolo aggiornato",
"body": {
"value": "Testo del corpo aggiornato",
"format": "plain_text",
"summary": "Sommario aggiornato"
}
},
"relationships": {
"my_entity_reference_field": {
"data": {},
}
}
}
}
Risposta
Risposta HTTP 200. Il corpo della risposta con il corpo e il sommario aggiornati e il riferimento all’entità rimosso.
Articolo da Documentazione di Drupal.