PROPFIND
HTTP metodas
HTTP metodo PROPFIND specifikacija
Metodas PROPFIND leidžia gauti savybes, apibrėžtas ištekliui, identifikuojamam pagal užklausos-URI, jei išteklius neturi vidinių narių, arba ištekliui, identifikuojamam pagal užklausos-URI, ir potencialiai jo nariams, jei išteklius yra kolekcija, turinti vidinių narių URL. Visi DAV atitinkantys ištekliai PRIVALO palaikyti PROPFIND metodą ir propfind
XML elementą (14.20 skirsnis) kartu su visais XML elementais, apibrėžtais naudoti su šiuo elementu.
Klientas su PROPFIND užklausa PRIVALO pateikti antraštę "Depth", kurios reikšmė yra "0", "1" arba "begalybė". Serveriai PRIVALO palaikyti "0" ir "1" gylio užklausas su WebDAV suderinamuose ištekliuose ir TURI palaikyti "begalybės" užklausas. Praktikoje begalinio gylio užklausų palaikymas GALI būti išjungtas dėl su tokiu elgesiu susijusių našumo ir saugumo problemų. Serveriai PRIVALO elgtis su užklausa be antraštės "Depth" taip, tarsi būtų įtraukta antraštė Depth: infinity
.
Klientas gali pateikti propfind
XML elementą užklausos metodo kūne, kuriame aprašoma, kokios informacijos prašoma. Tai galima padaryti:
- Paprašyti konkrečių savybių verčių, įvardijant norimas savybes
prop
elemente (serveris gali nepaisyti čia pateiktos savybių eilės tvarkos), - Paprašyti šioje specifikacijoje apibrėžtų savybių verčių (mažiausiai) ir negyvų savybių, naudojant
allprop
elementą (include
elementas gali būti naudojamas kartu suallprop
, siekiant nurodyti serveriui įtraukti ir papildomas gyvąsias savybes, kurios kitu atveju gali būti negrąžintos), - Prašyti visų ištekliui apibrėžtų savybių pavadinimų sąrašo, naudojant
propname
elementą.
Klientas gali nuspręsti nepateikti užklausos kūno. Tuščią PROPFIND užklausos kūną PRIVALOMA traktuoti kaip allprop
užklausą.
Atkreipkite dėmesį, kad allprop
negrąžina visų gyvų savybių reikšmių. WebDAV serveriai vis dažniau turi brangiai apskaičiuojamas arba ilgas savybes (žr. [RFC3253] ir [RFC3744]) ir jau dabar negrąžina visų savybių. Vietoj to WebDAV klientai gali naudoti propname
užklausas, kad sužinotų, kokios tiesioginės savybės egzistuoja, ir prašyti įvardytų savybių, kai gauna reikšmes. Kitoje vietoje apibrėžtai tiesioginei savybei tame apibrėžime galima nurodyti, ar ta tiesioginė savybė bus grąžinama allprop
užklausomis, ar ne.
Visi serveriai PRIVALO palaikyti turinio tipo text/xml
arba application/xml
atsakymo, kuriame yra multistatus
XML elementas, apibūdinantis bandymų gauti įvairias savybes rezultatus, grąžinimą.
Jeigu gaunant savybę įvyko klaida, į atsakymą PRIVALOMA įtraukti tinkamą klaidos rezultatą. Užklausa gauti neegzistuojančios savybės reikšmę yra klaida, todėl ji TURI būti pažymėta atsakymo
XML elementu, kuriame yra būsenos reikšmė 404 (nerastas).
Taigi, kolekcijos ištekliaus multistatus
XML elementas TURI apimti atsakymo
XML elementą kiekvienam kolekcijos nario URL, kad ir kokio gylio buvo prašoma. Jame NEGALI būti jokių atsakymo
elementų, skirtų ištekliams, kurie neatitinka WebDAV. Kiekviename atsakymo
elemente TURI būti elementas href
, kuriame pateikiamas ištekliaus, kurio savybės apibrėžtos prop
XML elemente, URL. Kolekcijos išteklių PROPFIND rezultatai grąžinami kaip plokščias sąrašas, kurio įrašų eiliškumas nėra svarbus. Atkreipkite dėmesį, kad išteklyje gali būti tik viena tam tikro pavadinimo savybės reikšmė, todėl PROPFIND atsakymuose ši savybė gali būti rodoma tik vieną kartą.
Savybėms gali būti taikoma prieigos kontrolė. Jei allprop
ir propname
užklausų atveju užsakovas neturi teisės žinoti, ar tam tikra savybė egzistuoja, tuomet savybė GALI būti tyliai neįtraukta į atsakymą.
Kai kuriuos PROPFIND rezultatus GALIMA talpinti į spartinančiąją atmintį, tačiau atsargiai, nes daugumai savybių nėra talpyklos patvirtinimo mechanizmo. Šis metodas yra saugus ir idempotentinis (žr. [RFC2616] 9.1 skirsnį).
PROPFIND metodo aprašymas
HTTP metodo PROPFIND pavyzdys
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