WebDAV – práce s vlastnostmi
Asi nejvýznamnější vlastností této technologie je možnost ukládání informací příslušejícím k jednotlivým zdrojům umístěných na serveru. WebDAV sice definuje standardní vlastnosti, ale nic nám nebrání v tom, abychom si vytvořili vlastní. V tomto článku se tedy budeme věnovat příkazům PROPPATCH a PROPFIND a práci s vlastnostmi.
Pokud budete implementovat podporu WebDAVu do svého serveru, mělo by vás zajímat, že WebDAV rozděluje vlastnosti do dvou skupin, na mrtvé (Dead Properties) a živé (Live Properties). Hodnotu živých vlastností určuje server (například velikost souboru a datum vytvoření), kdežto hodnotu mrtvých vlastností určuje pouze uživatel a server ji nesmí nijak modifikovat. Z pohledu uživatele nebude pro nás toto rozdělení příliš důležité.
Názvy vlastností tvoří vždy názvy elementů, zatímco hodnota vlastnosti je obsahem příslušného elementu. Následující tabulka obsahuje seznam standardně používaných vlastností.
Element | Popis |
---|---|
creationdate | datum a čas vytvoření zdroje (např.: 2003-04-14T14:34:39Z) |
displayname | název zdroje |
getcontentlength | velikost zdroje v bytech |
getcontenttype | MIME typ zdroje |
getlastmodified | datum a čas poslední úpravy zdroje (např.: Mon, 11 Mar 2002 09:55:20 GMT) |
lockdiscrovery | popisuje aktivní zámky na zdroji |
source | obsahuje element(y) link , které popisují odkazy mezi soubory. Více viz první příklad. |
supportedlock | poskytuje informace o tom, jaké zámky a vlastnosti zámků zdroj podporuje (více v příštím článku věnovaném zámkům) |
PROPPATCH
Příkaz PROPPATCH slouží k vytvoření, úpravě či odstranění vlastností, spojených se specifikovaným zdrojem. Uživatel musí požadovanou akci specifikovat v XML části dotazu, jehož kořenovým elementem musí být element propertyupdate
. K úpravě nebo přidání nové vlastnosti se používá element set
a k odstranění vlastnosti použijeme element remove
.
V rámci elementů remove
a set
jsou vlastnosti definovány elementem prop
. V druhém příkladě požadujeme po serveru, aby přidal k souboru smlouva.pdf
vlastnosti Autor
a Popis
, které jsme si definovali v DTD umístěném na adrese www.muj-webdav.cz/standards/dtd-one
. Zároveň chceme, aby server smazal již dříve uloženou vlastnost Pocasi
.
V přijaté odpovědi se objevil nový element propstat
. Obsahem tohoto elementu jsou názvy vlastností (seskupeny v elementu prop
) a stavový kód HTTP příslušející provedené operaci. V našem případě je jeden element propstat
odpovídající přidání vlastností a druhý element pro odebrání vlastnosti Pocasi
.
Pokud příkaz PROPPATCH proběhl v pořádku, pak je vrácen jako hodnota elementu status stavový kód 200 (OK). Pokud server neuspěl, vrátí odpovídající stavový kód, označující podstatu chyby. Podrobnosti o stavových kódech najdete jako vždy ve specifikaci WebDAVu a HTTP.
PROPFIND
Příkaz PROPFIND zprostředkovává zobrazení vlastností spojených se souborem. XML dokument specifikující tento příkaz je velmi důležitý, protože jeho obsah významně mění chování serveru při odeslání příkazu PROPFIND.
Kořenovým elementem musí být element propfind
, jehož obsahem může být jedna z následující možností:
- prázdný element
allprop
(viz třetí příklad) - prázdný element
propname
(viz čtvrtý příklad) - element
prop
obsahující názvy vlastností (viz pátý příklad)
V prvním případě server vrátí názvy a hodnoty všech vlastností. Pokud zašleme v XML dokumentu element propname
, pak server odešle pouze názvy vlastností připojených k souboru. Pokud použijeme třetí způsob, pak server vrátí názvy a hodnoty vybraných vlastností. Znění dotazu a chování serveru si můžete prohlédnout v připojených příkladech.
Hlavička Depth
Poprvé (ale určitě ne naposledy) se v článcích o WebDAVu setkáváme s HTTP hlavičkou Depth
(hloubka). Tu využijeme, pokud budeme aplikovat některé příkazy na kolekci. Hlavička Depth může nabývat hodnot 0
,1
nebo Infinity
(nekonečno). Pokud hlavičku odešleme s hodnotou nula, pak bude příkaz aplikován pouze na zdroj (například se zkopíruje jen název kolekce a její vlastnosti). Pokud hodnota hlavičky bude jedna, pak bude příkaz aplikován jak na zdroj, tak na přímé potomky (kromě názvu kolekce se zkopírují i v ní obsažené soubory). V případě hodnoty Infinity, budou příkazem ovlivněni všichni potomci zdroje (zkopíruje se název kolekce, všechny podadresáře a soubory).
S příkazem PROPFIND lze použít hlavičku Depth
s hodnotou 0 nebo 1. V prvním případě server vrátí pouze vlastnosti kolekce a v druhém případě i vlastnosti souborů v ní obsažených.
Odkazy, zdroje
- rfc-2518.rfc-index.com (RFC 2518 – WebDAV)
- rfc-2616.rfc-index.com (RFC 2616 – HTTP 1.1)
- software.formiginal.com/webdav/ (další materiály týkající se WebDAVu)
Mohlo by vás také zajímat
-
ZONER Webmail jako první v Česku přináší BIMI s VMC
11. července 2024 -
Proč investovat do nejvýkonnějších VPS s AMD EPYC procesory
14. června 2024 -
Webový správce souborů Filestash – dojmy a recenze
29. července 2024
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024