Eu posso criar artigos via REST
sem problemas. Mas não consigo descobrir como enviar arquivos.
Como envio arquivos (imagens) para o Drupal 8 via REST
?
Atualizar:
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 imagem (sem conteúdo da entidade):
curl --request POST --user admin:admin --header 'Content-type: application/hal+json' http://d8.local/entity/file
{"error":"No entity content received."}
Não consigo descobrir como criar o entity content
.
Respostas:
drush dl restui-8.x-1.x
/entity/file/{file}
POST para drupal.url / entity / file /
fonte
EntityResource.php
base no seu patch e na linha 117, retornei o ID da entidade e agora tenho pelo menos uma referência a ele dessa maneira:$response = new ResourceResponse(NULL, 201,['id' => $entity->id()]);
$entity->id()
a resposta. I passar o código de entidade para o nó e agora esse nó sabe sobre a imagemfile_managed
tabela do Drupal . Esta linha tem um únicofid
. Acredito que o próximo passo é POST a criação de um novo nó com um campo de imagem e use ofid
para associar o campo de imagem ao arquivo. Se eu entendi, a questão é como determinarfid
quando nada será retornado. Hoje, notei em um thread do Drupal que a versão futura da interface do usuário REST retornará a entidade completa, mas não tenho certeza de como resolver esse problema no momento.Seguinte formato de dados de postagem (use o codificador base64 para dados de imagem)
{ "_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=" } ] }
Defina Autorização, Tipo de Conteúdo nos cabeçalhos. (Autorização: xxxxxxxx Básico Tipo de Conteúdo: application / hal + json)
Use o seguinte php curl
Vá e verifique o arquivo aqui - admin / content / files
fonte
Você pode instalar o módulo de interface do usuário REST para ver quais pontos de extremidade você pode usar.
Como também permite configurar quais recursos são expostos por qual autenticação.
Observe que a interface do usuário atualmente fornece os pontos de extremidade incorretos: - Caminhos REST URI alterados para caminhos canônicos
fonte