PROPFIND
HTTP-menetelmä
HTTP-menetelmän PROPFIND määrittely
Metodi PROPFIND hakee Request-URI:n tunnistamalle resurssille määritellyt ominaisuudet, jos resurssilla ei ole sisäisiä jäseniä, tai Request-URI:n tunnistamalle resurssille ja mahdollisesti sen jäsenresursseille, jos resurssi on kokoelma, jolla on sisäisiä jäsen-URL-osoitteita. Kaikkien DAV-yhteensopivien resurssien PITÄÄ tukea PROPFIND-menetelmää ja propfind
XML-elementtiä (kohta 14.20) sekä kaikkia XML-elementtejä, jotka on määritelty käytettäväksi kyseisen elementin kanssa.
Asiakkaan PITÄÄ lähettää PROPFIND-pyynnön mukana Depth-otsikko, jonka arvo on "0", "1" tai "ääretön". Palvelimien PITÄÄ tukea "0"- ja "1"-syvyyspyyntöjä WebDAV-yhteensopivissa resursseissa ja niiden PITÄÄ tukea "ääretön"-pyyntöjä. Käytännössä äärettömän syvyyspyyntöjen tuki VOI olla pois käytöstä tähän käyttäytymiseen liittyvien suorituskyky- ja turvallisuusongelmien vuoksi. Palvelimien PITÄÄ käsitellä pyyntöä, jossa ei ole Depth-otsikkoa, ikään kuin siinä olisi Depth: infinity
-otsikko.
Asiakas voi lähettää propfind
XML-elementin pyyntömenetelmän rungossa, jossa kuvataan, mitä tietoja pyydetään. On mahdollista:
- Pyytää tiettyjä ominaisuuksien arvoja nimeämällä halutut ominaisuudet
prop
-elementissä (palvelin VOI jättää huomiotta ominaisuuksien järjestyksen tässä elementissä), - Pyytää ominaisuuksien arvoja niille ominaisuuksille, jotka on määritelty tässä määrittelyssä (vähintään) sekä kuolleille ominaisuuksille, käyttämällä
allprop
-elementtiä (include
-elementtiä voidaan käyttää yhdessäallprop
:n kanssa ohjeistamaan palvelinta sisällyttämään myös muita eläviä ominaisuuksia, joita ei ehkä muuten olisi palautettu), - Pyydä luettelo kaikkien resurssissa määriteltyjen ominaisuuksien nimistä käyttämällä
propname
-elementtiä.
Asiakas voi halutessaan olla lähettämättä pyyntörunkoa. Tyhjää PROPFIND-pyyntörunkoa ON käsiteltävä kuin se olisi allprop
-pyyntö.
Huomaa, että allprop
ei palauta kaikkien elävien ominaisuuksien arvoja. WebDAV-palvelimilla on yhä useammin kalliisti laskettuja tai pitkiä ominaisuuksia (ks. [RFC3253] ja [RFC3744]), eivätkä ne palauta jo nyt kaikkia ominaisuuksia. Sen sijaan WebDAV-asiakkaat voivat käyttää propname
-pyyntöjä saadakseen selville, mitä eläviä ominaisuuksia on olemassa, ja pyytää nimettyjä ominaisuuksia hakiessaan arvoja. Muualla määritellyn live-ominaisuuden osalta voidaan määritellä, palautetaanko kyseinen live-ominaisuus allprop
-pyynnöissä.
Kaikkien palvelimien PITÄÄ tukea vastauksen palauttamista sisältötyypillä text/xml
tai application/xml
, joka sisältää multistatus
XML-elementin, joka kuvaa eri ominaisuuksien hakuyritysten tulokset.
Jos ominaisuuden hakemisessa tapahtuu virhe, vastaukseen PITÄÄ sisällyttää asianmukainen virheilmoitus. Pyyntö hakea sellaisen ominaisuuden arvo, jota ei ole olemassa, on virhe, ja se PITÄÄ huomioida response
XML-elementillä, joka sisältää 404 (Not Found) -tilan arvon.
Kokoelmaresurssin multistatus
XML-elementin PITÄÄ siis sisältää response
XML-elementti jokaiselle kokoelman jäsen-URL-osoitteelle riippumatta siitä, kuinka syvälle se on pyydetty. Sen EI SAA sisältää response
-elementtejä resursseille, jotka eivät ole WebDAV-yhteensopivia. Jokaisen response
-elementin PITÄÄ sisältää href
-elementti, joka sisältää sen resurssin URL-osoitteen, johon prop
XML-elementin ominaisuudet on määritelty. Kokoelmaresurssin PROPFIND-tulokset palautetaan tasaisena listana, jonka merkintöjen järjestyksellä ei ole merkitystä. Huomaa, että resurssilla voi olla vain yksi arvo tietyn nimiselle ominaisuudelle, joten ominaisuus voi näkyä PROPFIND-vastauksissa vain kerran.
Ominaisuuksiin voi kohdistua pääsynvalvontaa. allprop
- ja propname
-pyyntöjen tapauksessa, jos päämiehellä ei ole oikeutta tietää, onko tietty ominaisuus olemassa, ominaisuus VOI olla äänettömästi poissuljettu vastauksesta.
Joitakin PROPFIND-tuloksia VOI tallentaa välimuistiin varovasti, koska useimmille ominaisuuksille ei ole välimuistin validointimekanismia. Tämä menetelmä on sekä turvallinen että idempotentti (ks. [RFC2616] kohta 9.1).
Menetelmän PROPFIND kuvaus
Esimerkki HTTP-menetelmästä 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