Puncte:1

?_format=json nu produce JSON pentru fișiere, REST

drapel us
J.g

Folosesc Drupal 9.3 cu REST UI, RESTful Web Services și Serialization activate. Pentru interfața de utilizare REST, am următoarea configurație pentru fișiere:

Metode: OBȚINE, POSTĂ, ȘTERGE, PATCHĂ

Formate de solicitare acceptate: json, xml

Furnizori de autentificare: cookie,

dar când încerc să obțin un json pentru un fișier (prin adăugarea ?_format=json la adresa URL), primesc fișierul în sine înapoi (cu alte cuvinte, pagina este aceeași ca și fără ?_format=json). Acest lucru se întâmplă numai pentru fișiere, atât media cât și nodurile generează json ca de obicei.

A patit cineva asta sau stie cum sa o repare?

J.g avatar
drapel us
J.g
De exemplu, când am ceva media, de exemplu `baseurl/media/1`, pot obține un json schimbând adresa URL în `baseurl/media/1?_format=json`, în mod similar cu nodurile, `baseurl/node/ 1?_format=json`, aș dori să fac același lucru cu fișiere precum `baseurl/sites/default/files/2021-06/test_0.txt`
Puncte:1
drapel in

Acest lucru se datorează faptului că Drupal livrează fișierul din sistemul de fișiere fără nicio prelucrare.

Dacă doriți un fișier livrat ca JSON (indiferent ce înseamnă asta). Aveți nevoie de un controler care să încarce fișierul, apoi să facă un json_decode pe conținut și să returneze rezultatul ca Symfony\Component\HttpFoundation\JsonResponse.

Și aveți nevoie și de o rută pentru acea metodă de controler.

J.g avatar
drapel us
J.g
Sunt destul de nou în Drupal, ați putea să oferiți niște îndrumări despre cum să procedați în acest sens (crearea unui controler și a unei rute)
Rainer Feike avatar
drapel in
Puteți găsi toate acestea, inclusiv exemple de cod la drupal.org, adică aici: https://www.drupal.org/docs/drupal-apis/routing-system/introductory-drupal-8-routes-and-controllers- exemplu
Puncte:0
drapel cn

Nu poți adăuga ?_format=json la o adresă URL a fișierului la www.example.com/sites/default/fișiere pentru că acesta este doar directorul fișierelor site-ului.

Deci, de ce Drupal vă oferă json când adăugați ?_format=json la www.example.com/node/123?_format=json sau www.example.com/media/123?_format=json? Asta pentru că acestea sunt entitati.

Deci, cum poți folosi ?_format=json cu fisiere? Va trebui să utilizați entități.

Cel mai simplu mod de a face acest lucru este cu modulul Media, care este încorporat în core.

Pentru a încerca asta:

  1. Instalați modulul media.
  2. Mergi la /admin/structure/media.

În mod implicit, vor fi create unele tipuri de media de bază (audio, document, imagine, video la distanță și video).

Verificați Doument tipul media, deoarece este un bun exemplu de utilizare a fișierelor.

De asemenea, puteți crea cu ușurință noi tipuri de media pentru cazul dvs. de utilizare specific.

Apoi poți folosi ?_format=json pe adresele URL media pe care le creați.

Dezavantajul acestei abordări este că încă nu puteți obține json din calea directorului de fișiere; va trebui să utilizați în schimb adresa URL a entității media.

Pentru a seta automat URL-urile entităților media pe baza unui model, puteți utiliza Pathauto.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.