Hacer los POST puede ser lo más complicado que hay en JSON:API pero más que nada por la estructura json que puede costarnos un poco hacerla.
Tenemos que tener en cuenta lo siguiente:
Respeta los permisos, así que el usuario que usemos debe tener los permisos necesarios para poder crear la entidad.
Respeta los formatos de los campos y el tipo de dato, de modo que en un campo de tipo int no podemos meter un string.
Antes de realmente empezar tenemos que hacer 2 cosas:
La primera es instalar el módulo HTTP Basic Authentication para poder autenticarnos en Drupal, de manera muy básica y diría que no recomendable para producción.
La segunda es configurar JSON:API para que se puedan realizar operaciones de CRUD, esto se hace desde aquí /admin/config/services/jsonapi.
El post tendremos que hacerlo a /jsonapi/node/recipe en este ejemplo para crear un nodo de tipo “récipe”. Pero al igual que en los get tenemos que poner la entidad y el bundle que queremos crear para crear el endpoint.
Ahora que ya tenemos todo listo tenemos que utilizar las siguientes cabeceras:
Content-type: application/vnd.api+json
Accept: application/vnd.api+json
Y añadir al body el siguiente json, que podemos copiarlo de una de las respuestas ya que es la misma estructura json, excepto en data que pasa de ser un array a un objeto.
{
"data":{
"type":"node--recipe",
"attributes":{
"title":"My primera receta",
"field_recipe_instruction":{
"value":"Mi primera receta contiene muchos ingredientes y no tengo claro como hacerla xD"
},
"moderation_state":"published",
"field_difficulty": "medium",
"field_preparation_time": 25,
"field_number_of_servings": 8,
"field_summary": {
"value": "Un quiche de inspiración italiana con tomates secos y calabacín. Una comida ligera perfecta para un día de verano.",
"format": "basic_html"
}
},
"relationships":{
"field_media_image":{
"data":{
"type":"media--image",
"id":"d930e8cd-a0e6-4dd1-b32b-e92a14ee48ee"
}
}
}
}
}
Si nos da algún problema por el token X-CSRF-Token tenemos que obtenerlo haciendo un get sin autenticarnos a este endpoint:
/session/token
Esto nos devolverá un token el cual tendremos que usar en el header del X-CSRF-Token.
# | Capítulo | Duración | Visualizado |
---|---|---|---|
1 | Introducción a JSON:API | 10:43 min | |
2 | Ocultando campos JSON:API | 3:27 min | |
3 | Ordenando entidades | 5:16 min | |
4 | Paginación | 4:25 min | |
5 | Incluyendo entidades en la respuesta | 7:57 min | |
6 | Filtrando y buscando | 6:32 min | |
7 | Agrupando filtros para AND y OR | 4:05 min | |
8 | Usando Include con otros parámetros | 8:11 min | |
9 | Multi-idioma | 3:39 min | |
10 | POST | 10:12 min | |
11 | PATCH | 3:20 min | |
12 | DELETE | 1:22 min | |
13 | Subiendo archivos | 9:38 min |