Mogę REST
bez problemu tworzyć artykuły . Ale nie mogę wymyślić, jak przesłać pliki.
Jak przesłać pliki (obrazy) do Drupal 8 za pośrednictwem REST
?
Aktualizacja:
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"
Opublikuj obraz (bez zawartości encji):
curl --request POST --user admin:admin --header 'Content-type: application/hal+json' http://d8.local/entity/file
{"error":"No entity content received."}
Nie mogę się dowiedzieć, jak utworzyć entity content
.
Odpowiedzi:
drush dl restui-8.x-1.x
/entity/file/{file}
POST do drupal.url / entity / file /
źródło
EntityResource.php
podstawie twojej łatki i linii 117, zwróciłem identyfikator bytu i teraz mam przynajmniej odniesienie do niego w ten sposób:$response = new ResourceResponse(NULL, 201,['id' => $entity->id()]);
$entity->id()
odpowiedź. Przekazuję identyfikator bytu do węzła, a teraz ten węzeł wie o obraziefile_managed
tabeli Drupala . Ten wiersz ma unikalnyfid
. Uważam, że następnym krokiem jest POST utworzenie nowego węzła z polem obrazu i użycie gofid
do skojarzenia pola obrazu z plikiem. Jeśli cię rozumiem, pytanie brzmi, jak ustalić,fid
kiedy nic nie zostanie zwrócone. Zauważyłem dzisiaj z wątku Drupal, że przyszła wersja interfejsu REST zwróci pełny byt, ale nie jestem pewien, jak na razie rozwiązać ten problem.Poniższy format danych postu (użyj kodera base64 dla danych obrazu)
{ "_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=" } ] }
Ustaw autoryzację, Content-Type w nagłówkach. (Autoryzacja: Basic xxxxxxxx Content-Type: application / hal + json)
Użyj następującego curl php
Przejdź tutaj i sprawdź plik - admin / content / files
źródło
Możesz zainstalować moduł interfejsu użytkownika REST , aby zobaczyć, jakich punktów końcowych możesz użyć.
Ponieważ pozwala również skonfigurować, które zasoby są ujawniane przez jakie uwierzytelnianie.
Należy pamiętać, że interfejs użytkownika zapewnia obecnie nieprawidłowe punkty końcowe: - Ścieżki REST URI zmieniono na ścieżki kanoniczne
źródło