PROPFIND

HTTP yöntemi

HTTP yöntemi PROPFIND'ün belirtimi

PROPFIND yöntemi, kaynağın dahili üyesi yoksa Request-URI tarafından tanımlanan kaynakta veya kaynak dahili üye URL'leri olan bir koleksiyon ise Request-URI tarafından tanımlanan kaynakta ve potansiyel olarak üye kaynaklarında tanımlanan özellikleri alır. Tüm DAV uyumlu kaynaklar PROPFIND yöntemini ve propfind XML elemanını (Bölüm 14.20) ve bu elemanla birlikte kullanılmak üzere tanımlanmış tüm XML elemanlarını desteklemelidir.

İstemci, PROPFIND isteği ile birlikte "0", "1" veya "sonsuz" değerine sahip bir Derinlik başlığı göndermelidir. Sunucular, WebDAV uyumlu kaynaklarda "0" ve "1" derinlik isteklerini desteklemeli ve "sonsuz" istekleri desteklemelidir. Uygulamada, bu davranışla ilişkili performans ve güvenlik endişeleri nedeniyle sonsuz derinlikli isteklere yönelik destek devre dışı bırakılabilir. Sunucular, Derinlik başlığı olmayan bir isteği Depth: infinity başlığı eklenmiş gibi değerlendirmelidir.

İstemci, istek yönteminin gövdesinde hangi bilgilerin istendiğini açıklayan bir propfind XML öğesi gönderebilir. Şunları yapmak mümkündür:

  • İstenen özellikleri prop öğesi içinde adlandırarak belirli özellik değerlerini talep etmek (buradaki özelliklerin sıralaması sunucu tarafından göz ardı edilebilir),
  • Bu belirtimde tanımlanan özellikler (en azından) ve ölü özellikler için özellik değerleri talep etmek, allprop öğesini kullanarak (include öğesi allprop ile birlikte kullanılarak sunucuya başka türlü döndürülmemiş olabilecek ek canlı özellikleri de dahil etmesi talimatı verilebilir),
  • propname öğesini kullanarak kaynakta tanımlanan tüm özelliklerin adlarının bir listesini isteyin.

İstemci bir istek gövdesi göndermemeyi seçebilir. Boş bir PROPFIND istek gövdesi bir allprop isteği gibi ele alınmalıdır.

allprop'un tüm canlı özellikler için değer döndürmediğini unutmayın. WebDAV sunucuları giderek daha pahalı hesaplanan veya uzun özelliklere sahip olmaktadır (bkz. [RFC3253] ve [RFC3744]) ve zaten tüm özellikleri döndürmemektedir. Bunun yerine, WebDAV istemcileri hangi canlı özelliklerin var olduğunu keşfetmek için propname isteklerini kullanabilir ve değerleri alırken adlandırılmış özellikleri isteyebilir. Başka bir yerde tanımlanmış bir canlı özellik için, bu tanım o canlı özelliğin allprop isteklerinde döndürülüp döndürülmeyeceğini belirtebilir.

Tüm sunucular, çeşitli özellikleri alma girişimlerinin sonuçlarını açıklayan bir multistatus XML öğesi içeren text/xml veya application/xml içerik türünde bir yanıt döndürmeyi desteklemelidir.

Bir özellik alınırken hata oluşursa, uygun bir hata sonucu yanıta dahil edilmelidir. Mevcut olmayan bir özelliğin değerini alma isteği bir hatadır ve 404 (Bulunamadı) durum değerini içeren bir response XML elemanı ile belirtilmelidir.

Sonuç olarak, bir koleksiyon kaynağı için multistatus XML elemanı, koleksiyonun her üye URL'si için, istenen derinliğe kadar bir response XML elemanı içermelidir. WebDAV uyumlu olmayan kaynaklar için herhangi bir response öğesi İÇERMEMELİDİR. Her response öğesi, prop XML öğesindeki özelliklerin tanımlandığı kaynağın URL'sini içeren bir href öğesi içermelidir. Bir koleksiyon kaynağı üzerindeki PROPFIND sonuçları, giriş sırası önemli olmayan düz bir liste olarak döndürülür. Bir kaynağın belirli bir isimdeki bir özellik için sadece bir değeri olabileceğini unutmayın, bu nedenle özellik PROPFIND yanıtlarında sadece bir kez görünebilir.

Özellikler erişim denetimine tabi olabilir. allprop ve propname istekleri durumunda, bir sorumlu belirli bir özelliğin var olup olmadığını bilme hakkına sahip değilse, özellik yanıttan sessizce çıkarılabilir.

Bazı PROPFIND sonuçları, çoğu özellik için önbellek doğrulama mekanizması olmadığından, dikkatli bir şekilde önbelleğe alınabilir. Bu yöntem hem güvenli hem de idempotenttir (bkz. [RFC2616] Bölüm 9.1).

HTTP yöntemi PROPFIND, Internet Engineering Task Force (IETF) ve World Wide Web Consortium (W3C) tarafından belge RFC 4918'ün 9.1. bölümünde belirtilmiştir.

PROPFIND yönteminin açıklaması

çalışmalar devam ediyor

HTTP yöntemi PROPFIND için örnek

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