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 su allprop, 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į).

HTTP metodą PROPFIND Interneto inžinerijos darbo grupė (IETF) ir Pasaulinis žiniatinklio konsorciumas (W3C) nurodė RFC 4918 dokumento 9.1 skirsnyje.

PROPFIND metodo aprašymas

nebaigtas darbas

HTTP metodo PROPFIND pavyzdys

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