PROPFIND

Metoda HTTP

Specifikacija metode HTTP PROPFIND

Metoda PROPFIND prikliče lastnosti, opredeljene na viru, ki ga identificira zahtevek-URI, če vir nima notranjih članov, ali na viru, ki ga identificira zahtevek-URI, in potencialno njegovih članskih virih, če je vir zbirka, ki ima notranje članske naslove URL. Vsi viri, skladni z DAV, MORAJO podpirati metodo PROPFIND in element XML propfind (razdelek 14.20) skupaj z vsemi elementi XML, določenimi za uporabo s tem elementom.

Odjemalec mora z zahtevo PROPFIND predložiti glavo Depth z vrednostjo "0", "1" ali "neskončno". Strežniki MORAJO podpirati zahteve za globino "0" in "1" v virih, skladnih s standardom WebDAV, in MORAJO podpirati zahteve "neskončno". V praksi je podpora za zahteve z neskončno globino MOŽNA onemogočena zaradi pomislekov glede zmogljivosti in varnosti, povezanih s tem vedenjem. Strežniki PRAVILNO obravnavajo zahtevo brez glave Depth, kot da bi bila vključena glava Depth: infinity.

Odjemalec lahko v telesu metode zahteve predloži element XML propfind, ki opisuje, katere informacije se zahtevajo. To je mogoče:

  • zahteva določene vrednosti lastnosti, tako da v elementu prop poimenuje želene lastnosti (strežnik ne sme upoštevati vrstnega reda lastnosti),
  • zahteva vrednosti lastnosti za tiste lastnosti, ki so opredeljene v tej specifikaciji (najmanj), in mrtve lastnosti, z uporabo elementa allprop (element include se lahko uporabi skupaj z allprop, da se strežniku naroči, naj vključi tudi dodatne žive lastnosti, ki morda sicer ne bi bile vrnjene),
  • zaželite seznam imen vseh lastnosti, opredeljenih na viru, z uporabo elementa propname.

Odjemalec se lahko odloči, da ne bo predložil telesa zahteve. Prazno telo zahteve PROPFIND MORA biti obravnavano, kot da je zahteva allprop.

Upoštevajte, da allprop ne vrne vrednosti za vse žive lastnosti. Strežniki WebDAV imajo vse pogosteje drago izračunane ali dolge lastnosti (glejte [RFC3253] in [RFC3744]) in ne vračajo že vseh lastnosti. Namesto tega lahko odjemalci WebDAV uporabijo zahteve propname, da ugotovijo, katere žive lastnosti obstajajo, in pri pridobivanju vrednosti zahtevajo poimenovane lastnosti. Za živo lastnost, ki je opredeljena drugje, lahko ta opredelitev določa, ali bo ta živa lastnost vrnjena v zahtevah allprop ali ne.

Vsi strežniki MORAJO podpirati vračanje odgovora vrste vsebine text/xml ali application/xml, ki vsebuje element multistatus XML, ki opisuje rezultate poskusov pridobivanja različnih lastnosti.

Če pride do napake pri pridobivanju lastnosti, mora biti v odgovor vključen ustrezen rezultat napake. Zahteva za pridobitev vrednosti lastnosti, ki ne obstaja, je napaka in jo je treba označiti z elementom response XML, ki vsebuje vrednost stanja 404 (Not Found).

Zato element multistatus XML za vir zbirke MORA vsebovati element response XML za vsak URL člana zbirke, do katere koli globine je bila zahtevana. NE MORA vsebovati elementov response za vire, ki niso skladni z WebDAV. Vsak element response MORA vsebovati element href, ki vsebuje URL vira, za katerega so opredeljene lastnosti v elementu prop XML. Rezultati za PROPFIND na viru zbirke se vrnejo kot ploščati seznam, pri katerem vrstni red vnosov ni pomemben. Upoštevajte, da ima lahko vir samo eno vrednost za lastnost z danim imenom, zato se lahko lastnost v odgovorih PROPFIND prikaže samo enkrat.

Vrednosti so lahko predmet nadzora dostopa. V primeru zahtevkov allprop in propname, če naročnik nima pravice vedeti, ali določena lastnost obstaja, se lastnost lahko tiho izključi iz odgovora.

Nekatere rezultate PROPFIND se lahko shranijo v predpomnilnik, vendar previdno, saj za večino lastnosti ni mehanizma za preverjanje predpomnilnika. Ta metoda je varna in idempotentna (glej razdelek 9.1 [RFC2616]).

Metodo HTTP PROPFIND sta v oddelku 9.1 dokumenta RFC 4918 določila projektna skupina za internetno inženirstvo (IETF) in konzorcij za svetovni splet (W3C).

Opis metode PROPFIND

delo v teku

Primer za metodo HTTP PROPFIND

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