PROPFIND
HTTP-metode
Spesifikasjon av HTTP-metoden PROPFIND
Propfind-metoden henter egenskaper som er definert på ressursen som er identifisert av Request-URI, hvis ressursen ikke har noen interne medlemmer, eller på ressursen som er identifisert av Request-URI og potensielt dens medlemsressurser, hvis ressursen er en samling som har interne medlems-URL-er. Alle DAV-kompatible ressurser MÅ støtte PROPFIND-metoden og XML-elementet propfind
(avsnitt 14.20) sammen med alle XML-elementer som er definert for bruk med dette elementet.
En klient MÅ sende inn et Depth-hode med verdien "0", "1" eller "uendelig" med en PROPFIND-forespørsel. Servere MÅ støtte "0"- og "1"-dybdeforespørsler på WebDAV-kompatible ressurser og BØR støtte "uendelig"-forespørsler. I praksis KAN støtte for forespørsler med uendelig dybde være deaktivert på grunn av ytelses- og sikkerhetsproblemer knyttet til denne atferden. Servere BØR behandle en forespørsel uten et Depth-hode som om et Depth: infinity
-hode var inkludert.
En klient kan sende inn et propfind
XML-element i brødteksten til forespørselsmetoden som beskriver hvilken informasjon som blir forespurt. Det er mulig å gjøre dette:
- Begjære bestemte egenskapsverdier ved å navngi de ønskede egenskapene i
prop
-elementet (rekkefølgen på egenskapene her KAN ignoreres av serveren), - Begjære egenskapsverdier for de egenskapene som er definert i denne spesifikasjonen (som et minimum), pluss døde egenskaper, ved å bruke elementet
allprop
(elementetinclude
kan brukes sammen medallprop
for å instruere serveren om også å inkludere flere levende egenskaper som ellers ikke ville blitt returnert), - Begjære en liste med navn på alle egenskapene som er definert på ressursen, ved å bruke elementet
propname
.
En klient kan velge å ikke sende inn en forespørselsdel. En tom PROPFIND-forespørsel MÅ behandles som om den var en allprop
-forespørsel.
Bemerk at allprop
ikke returnerer verdier for alle live-egenskaper. WebDAV-servere har i økende grad dyrt beregnede eller lange egenskaper (se [RFC3253] og [RFC3744]) og returnerer ikke alle egenskaper allerede. I stedet kan WebDAV-klienter bruke propname
-forespørsler for å finne ut hvilke live-egenskaper som finnes, og be om navngitte egenskaper når de henter verdier. For en live-egenskap som er definert et annet sted, kan definisjonen spesifisere om denne live-egenskapen skal returneres i allprop
-forespørsler eller ikke.
Alle servere MÅ støtte retur av et svar av innholdstypen text/xml
eller application/xml
som inneholder et multistatus
XML-element som beskriver resultatene av forsøkene på å hente de ulike egenskapene.
Hvis det oppstår en feil ved henting av en egenskap, MÅ et korrekt feilresultat inkluderes i svaret. En forespørsel om å hente verdien av en egenskap som ikke finnes, er en feil og MÅ noteres med et response
XML-element som inneholder en 404 (Not Found)-statusverdi.
Følgelig MÅ multistatus
XML-elementet for en samlingsressurs inneholde et response
XML-element for hver medlems-URL i samlingen, til den dybden det ble bedt om. Det BØR IKKE inneholde noen response
-elementer for ressurser som ikke er WebDAV-kompatible. Hvert response
-element MÅ inneholde et href
-element som inneholder URL-adressen til ressursen som egenskapene i prop
XML-elementet er definert på. Resultater for en PROPFIND på en samlingsressurs returneres som en flat liste der rekkefølgen på oppføringene ikke er av betydning. Merk at en ressurs bare kan ha én verdi for en egenskap med et gitt navn, slik at egenskapen bare vises én gang i PROPFIND-svar.
Egenskaper kan være underlagt tilgangskontroll. Hvis en prinsipal ikke har rett til å vite om en bestemt egenskap finnes, KAN egenskapen ekskluderes fra svaret ved forespørsler om allprop
og propname
.
Noen PROPFIND-resultater KAN bufres, med forsiktighet, ettersom det ikke finnes noen mekanisme for validering av bufring for de fleste egenskaper. Denne metoden er både sikker og idempotent (se avsnitt 9.1 i [RFC2616]).
Beskrivelse av PROPFIND-metoden
Eksempel for HTTP-metoden 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