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
(elementinclude
se lahko uporabi skupaj zallprop
, 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]).
Opis metode PROPFIND
Primer za metodo HTTP PROPFIND
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
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