PROPFIND
Metóda HTTP
Špecifikácia metódy HTTP PROPFIND
Metóda PROPFIND načíta vlastnosti definované na prostriedku identifikovanom podľa Request-URI, ak prostriedok nemá žiadne vnútorné členy, alebo na prostriedku identifikovanom podľa Request-URI a potenciálne jeho členských prostriedkoch, ak je prostriedok kolekciou, ktorá má vnútorné členské adresy URL. Všetky zdroje kompatibilné s DAV MUSIA podporovať metódu PROPFIND a prvok propfind
XML (časť 14.20) spolu so všetkými prvkami XML definovanými na použitie s týmto prvkom.
Klient MUSÍ pri požiadavke PROPFIND odoslať hlavičku Depth s hodnotou "0", "1" alebo "nekonečno". Servery MUSIA podporovať požiadavky na hĺbku "0" a "1" na zdrojoch kompatibilných s WebDAV a MUSIA podporovať požiadavky "nekonečno". V praxi sa podpora požiadaviek s nekonečnou hĺbkou MÔŽE vypnúť z dôvodu výkonnostných a bezpečnostných problémov spojených s týmto správaním. Servery MUSIA zaobchádzať s požiadavkou bez hlavičky Depth (hĺbka), ako keby bola zahrnutá hlavička Depth: infinity
.
Klient môže v tele metódy požiadavky odoslať prvok propfind
XML, ktorý opisuje, aké informácie sa požadujú. Je to možné:
- požiadať o konkrétne hodnoty vlastností tak, že v rámci prvku
prop
pomenuje požadované vlastnosti (poradie vlastností v tomto prvku MÔŽE server ignorovať), - požiadať o hodnoty vlastností tých vlastností, ktoré sú definované v tejto špecifikácii (minimálne), plus mŕtve vlastnosti, pomocou prvku
allprop
(prvokinclude
sa môže použiť spolu sallprop
, aby sa serveru prikázalo zahrnúť aj ďalšie živé vlastnosti, ktoré by sa inak nemuseli vrátiť), - vyžiadať zoznam názvov všetkých vlastností definovaných na zdroji pomocou prvku
propname
.
Klient sa môže rozhodnúť, že telo požiadavky nepredloží. S prázdnym telom požiadavky PROPFIND sa MUSÍ zaobchádzať, ako keby išlo o požiadavku allprop
.
Poznamenajte, že allprop
nevracia hodnoty všetkých živých vlastností. Servery WebDAV majú čoraz častejšie nákladne vypočítané alebo dlhé vlastnosti (pozri [RFC3253] a [RFC3744]) a nevracajú už všetky vlastnosti. Namiesto toho môžu klienti WebDAV používať požiadavky propname
na zistenie, aké živé vlastnosti existujú, a pri získavaní hodnôt požadovať pomenované vlastnosti. Pre živú vlastnosť definovanú inde môže táto definícia špecifikovať, či sa táto živá vlastnosť vráti alebo nevráti v požiadavkách allprop
.
Všetky servery MUSIA podporovať vrátenie odpovede typu obsahu text/xml
alebo application/xml
, ktorá obsahuje prvok multistatus
XML, ktorý opisuje výsledky pokusov o načítanie rôznych vlastností.
Ak dôjde k chybe pri načítaní vlastnosti, potom sa do odpovede MUSÍ zahrnúť správny výsledok chyby. Požiadavka na načítanie hodnoty vlastnosti, ktorá neexistuje, je chybou a MUSÍ sa zaznamenať pomocou prvku response
XML, ktorý obsahuje hodnotu stavu 404 (Not Found).
Potom prvok multistatus
XML pre zdroj kolekcie MUSÍ obsahovať prvok response
XML pre každú členskú adresu URL kolekcie, do akejkoľvek hĺbky bola požadovaná. NEMUSÍ obsahovať žiadne prvky response
pre zdroje, ktoré nie sú kompatibilné s WebDAV. Každý prvok response
MUSÍ obsahovať prvok href
, ktorý obsahuje adresu URL zdroja, na ktorom sú definované vlastnosti v prvku prop
XML. Výsledky pre PROPFIND na prostriedku kolekcie sa vrátia ako plochý zoznam, ktorého poradie položiek nie je dôležité. Všimnite si, že zdroj môže mať len jednu hodnotu pre vlastnosť daného názvu, takže vlastnosť sa môže v odpovediach PROPFIND zobraziť len raz.
Vlastnosti môžu podliehať kontrole prístupu. V prípade požiadaviek allprop
a propname
, ak zadávateľ nemá právo vedieť, či daná vlastnosť existuje, potom sa vlastnosť MÔŽE z odpovede potichu vylúčiť.
Niektoré výsledky PROPFIND sa MÔŽU ukladať do vyrovnávacej pamäte, s opatrnosťou, pretože pre väčšinu vlastností neexistuje mechanizmus overovania vyrovnávacej pamäte. Táto metóda je bezpečná a idempotentná (pozri časť 9.1 [RFC2616]).
Opis metódy PROPFIND
Príklad pre metódu 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