PROPFIND

HTTP metode

HTTP metodes PROPFIND specifikācija

Metode PROPFIND iegūst īpašības, kas definētas resursam, kurš identificēts ar pieprasījuma-URI, ja resursam nav iekšējo locekļu, vai resursam, kurš identificēts ar pieprasījuma-URI, un, iespējams, tā locekļu resursiem, ja resurss ir kolekcija, kurai ir iekšējo locekļu URL. Visiem DAV prasībām atbilstošiem resursiem JĀPATUR atbalstīt PROPFIND metodi un propfind XML elementu (14.20. sadaļa) kopā ar visiem XML elementiem, kas definēti izmantošanai kopā ar šo elementu.

Klientam kopā ar PROPFIND pieprasījumu JĀPARODĪJAS iesniegt galveni Depth ar vērtību "0", "1" vai "bezgalība". Serveriem JĀATĻAUJ atbalstīt "0" un "1" dziļuma pieprasījumus WebDAV saderīgiem resursiem un JĀATĻAUJ atbalstīt "bezgalības" pieprasījumus. Praksē bezgalīga dziļuma pieprasījumu atbalsts VAR būt atspējots, ņemot vērā ar šādu uzvedību saistītās veiktspējas un drošības problēmas. Serveri PIENĀCĪGI apstrādā pieprasījumu bez dziļuma galvenes tā, it kā būtu iekļauta Depth: infinity galvene.

Klients var iesniegt propfind XML elementu pieprasījuma metodes korpusā, aprakstot, kāda informācija tiek pieprasīta. Ir iespējams:

  • Pieprasīt konkrētu īpašību vērtības, nosaucot vēlamās īpašības elementā prop (šeit norādīto īpašību secību serveris VAR ignorēt),
  • Pieprasīt īpašību vērtības tām īpašībām, kas definētas šajā specifikācijā (kā minimums), kā arī mirušām īpašībām, izmantojot elementu allprop (elementu include var izmantot kopā ar allprop, lai uzdotu serverim iekļaut arī papildu dzīvās īpašības, kas citādi varētu netikt atgrieztas),
  • Lūdz visu resursā definēto īpašību nosaukumu sarakstu, izmantojot elementu propname.

Klients var izvēlēties nesniegt pieprasījuma ķermeni. Tukšu PROPFIND pieprasījuma ķermeni JĀŅEM kā allprop pieprasījumu.

Atzīmējiet, ka allprop neatgriež visu dzīvo īpašību vērtības. WebDAV serveriem arvien biežāk ir dārgi aprēķināmas vai garas īpašības (sk. [RFC3253] un [RFC3744]), un tie neatgriež visas īpašības jau tagad. Tā vietā WebDAV klienti var izmantot propname pieprasījumus, lai uzzinātu, kādas ir dzīvās īpašības, un, iegūstot vērtības, pieprasīt nosauktās īpašības. Citur definētai tiešai īpašībai šajā definīcijā var norādīt, vai šī tiešā īpašība tiks vai netiks atgriezta allprop pieprasījumos.

Visiem serveriem JĀPATUR atbalstīt satura tipa text/xml vai application/xml atbildes atgriešanu, kas satur multistatus XML elementu, kurā aprakstīti dažādu īpašību iegūšanas mēģinājumu rezultāti.

Ja, iegūstot īpašību, ir pieļauta kļūda, tad atbildē JĀI iekļauj atbilstošu kļūdas rezultātu. Pieprasījums iegūt neeksistējošas īpašības vērtību ir kļūda, un tas ir jāatzīmē ar response XML elementu, kas satur statusa vērtību 404 (nav atrasts).

Tātad kolekcijas resursa multistatus XML elementā JĀIEKĻAUJ response XML elements katram kolekcijas locekļa URL, neatkarīgi no tā, cik dziļš ir pieprasīts. Tajā NAV jāietver nekādi response elementi resursiem, kas nav saderīgi ar WebDAV. Katrā response elementā JĀIEVIENO ietvert href elementu, kas satur tā resursa URL, kuram ir definētas īpašības prop XML elementā. PROPFIND rezultāti par kolekcijas resursu tiek atgriezti kā plakans saraksts, kurā ierakstu secība nav būtiska. Ņemiet vērā, ka resursam var būt tikai viena konkrētā nosaukuma īpašības vērtība, tāpēc īpašība PROPFIND atbildēs var parādīties tikai vienu reizi.

Uz īpašībām var attiekties piekļuves kontrole. Ja allprop un propname pieprasījumu gadījumā principālam nav tiesību zināt, vai konkrētā īpašība eksistē, tad īpašība VAR tikt klusi izslēgta no atbildes.

Katrus PROPFIND rezultātus VAR būt kešatmiņā, taču uzmanīgi, jo vairumam īpašību nav kešatmiņas validācijas mehānisma. Šī metode ir droša un idempotenta (sk. [RFC2616] 9.1. iedaļu).

HTTP PROPFIND metodi RFC 4918. dokumenta 9.1. iedaļā ir precizējusi Interneta inženierijas darba grupa (IETF) un Pasaules tīmekļa konsorcijs (W3C).

PROPFIND metodes apraksts

nepabeigtie darbi

HTTP metodes PROPFIND piemērs

Request header:
PROPFIND /data HTTP/1.1
Host: api.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/58.0.3029.110 Safari/537
Depth: 1
Content-Type: text/xml; charset="utf-8"
Accept-Language: de-DE,de;q=0.5
Connection: keep-alive
Response header:
HTTP/1.1 207 Multi-Status
Content-Type: text/xml; charset="utf-8"
Content-Length: 453
Date: Mon, 31 July 2023 14:58:12 GMT
Server: Apache/2.4.7 (Ubuntu)
Cache-Control: no-cache