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).

IETF (Internet Engineering Task Force) ja W3C (World Wide Web Consortium) ovat määritelleet HTTP-menetelmän PROPFIND asiakirjan RFC 4918 kohdassa 9.1.

Menetelmän PROPFIND kuvaus

keskeneräinen työ

Esimerkki HTTP-menetelmästä PROPFIND

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