Puedo crear artículos vía REST
sin problemas. Pero no puedo entender cómo enviar archivos.
¿Cómo envío archivos (imágenes) a Drupal 8 a través de REST
?
Actualizar:
REST UI - File: /file/{id}
Example image added in article:
/admin/content/files -> /admin/content/files/usage/1
file {id} = 1?
Get file id 1:
curl --request GET --user admin:admin --header 'Accept: application/hal+json' http://d8.local/file/1
A fatal error occurred: No route found for "GET /file/1"
Publicar imagen (sin contenido de entidad):
curl --request POST --user admin:admin --header 'Content-type: application/hal+json' http://d8.local/entity/file
{"error":"No entity content received."}
No puedo descubrir cómo crear el entity content
.
Respuestas:
drush dl restui-8.x-1.x
/entity/file/{file}
PUBLICAR en drupal.url / entity / file /
fuente
EntityResource.php
según su parche y la línea 117, devolví la identificación de la entidad y ahora al menos tengo una referencia de esa manera:$response = new ResourceResponse(NULL, 201,['id' => $entity->id()]);
$entity->id()
a la respuesta. Paso la identificación de la entidad al nodo y ahora ese nodo conoce la imagenfile_managed
tabla de Drupal . Esta fila tiene un únicofid
. Creo que el siguiente paso es PUBLICAR la creación de un nuevo nodo con un campo de imagen y usarlofid
para asociar el campo de imagen con el archivo. Si te entiendo, la pregunta es cómo determinarfid
cuándo no se devuelve nada. Noté hoy en un hilo de Drupal que la versión futura de la interfaz de usuario REST devolverá la entidad completa, pero no estoy seguro de cómo resolver este problema por ahora.Siguiente formato de datos de publicación (use el codificador base64 para datos de imagen)
{ "_links": { "type": { "href": "http://d8.local/rest/type/file/image" } }, "filename": [ { "value": "favicon-32x32.png" } ], "filemime": [ { "value": "image/png" } ], "filesize": [ { "value": "488" } ], "type": [ { "target_id": "image" } ], "data": [ { "value": "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAkUExURUxpcSOq4SOq4SOq4SOq4SOq4SOq4SOq4SOq4SOq4SOq4SOq4U0m8UcAAAAMdFJOUwD/EvAm2qhTPMRrkl4CMYAAAAE1SURBVCjPXZG/S8NQEMePR7Ehnb48khC7BEFFnYJD6/aWOLilVBy6WBVc648/oCii1KlFKDrFwV2tqH+edy9Rk7zh8e7Dfe++944oP5dUO59RDQyPqrFK/WqKCzxUwA30oJyymervlVK8PsVBOd85hh6pyflfhwXg024cjguwBqCjhsCsSOAn+k4MBGpUWAB6Tb6W1VxAgv+MfcPgWUBgazjxoYwlQLrsmBa6MhbH3hep2yu6QJuowWL9Yfs1U4QRSbWOjRts0DMCdEbqjl8s1kYkPqmX7YGRfgy4aJe2IB+0wZJI2s7ojEGbWtJejL1aL55h+wGDVWTWix47+cAug6kAycjs+LkkjFzku0h6dC3D01KxCmdOLrt7pyQ0+Z/tRXT/eEr0dvL7y6zkrbhPtYVPrOAHKZQ53IyepQMAAAAASUVORK5CYII=" } ] }
Establecer autorización, tipo de contenido en encabezados. (Autorización: básica xxxxxxxx tipo de contenido: aplicación / hal + json)
Use el siguiente php curl
Ve y revisa el archivo aquí - admin / content / files
fuente
Puede instalar el módulo REST UI para ver qué puntos finales puede usar.
Como también le permite configurar qué recursos están expuestos por qué autenticación.
Tenga en cuenta que la interfaz de usuario actualmente proporciona los puntos finales incorrectos: - Las rutas REST URI cambiaron a rutas canónicas
fuente