Я могу создавать статьи через REST
без проблем. Но я не могу понять, как отправить файлы.
Как отправить файлы (изображения) в Drupal 8 через REST
?
Обновить:
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"
Опубликовать изображение (без содержания объекта):
curl --request POST --user admin:admin --header 'Content-type: application/hal+json' http://d8.local/entity/file
{"error":"No entity content received."}
Я не могу узнать, как создать entity content
.
Ответы:
drush dl restui-8.x-1.x
/entity/file/{file}
POST для drupal.url / entity / file /
источник
EntityResource.php
основываясь на вашем патче и строке 117, я вернул идентификатор объекта, и теперь у меня по крайней мере есть ссылка на него таким образом:$response = new ResourceResponse(NULL, 201,['id' => $entity->id()]);
$entity->id()
к ответу. Я передаю идентификатор объекта узлу, и теперь этот узел знает об изображенииfile_managed
таблицу Drupal . Этот ряд уникаленfid
. Я полагаю, что следующий шаг - POST создать новый узел с полем изображения и использовать его,fid
чтобы связать поле изображения с файлом. Если я вас понимаю, вопрос в том, как определить,fid
когда ничего не возвращается. Сегодня я заметил в ветке Drupal, что будущая версия REST UI вернет полную сущность, но я пока не уверен, как решить эту проблему.Следующий формат почтовых данных (используйте кодировщик base64 для данных изображения)
{ "_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=" } ] }
Установите авторизацию, Content-Type в заголовках. (Authorization: Basic xxxxxxxx Content-Type: application / hal + json)
Используйте следующий php curl
Идите и проверьте файл здесь - admin / content / files
источник
Вы можете установить модуль REST UI, чтобы увидеть, какие конечные точки вы можете использовать.
Кроме того, он позволяет вам настроить, какие ресурсы подвергаются какой аутентификации.
Обратите внимание, что пользовательский интерфейс в настоящее время предоставляет неверные конечные точки: - REST URI пути изменены на канонические пути
источник