WebDAV – komunikace mezi klientem a serverem
V předcházejícím článku jsme se seznámili se základy technologie WebDAV. Tentokrát se zaměříme na to, jakým způsobem spolu klient a server komunikují. Nejde o nic nového, pouze spojíme znalosti z oblasti XML a HTTP. Obsah článku bude důležitý proto, abychom pochopili, jakým způsobem příkazy používat.
Pro ilustraci si ukážeme jednoduchý příklad, ze kterého budeme vycházet.
Dotaz klienta
Nejdříve se zaměříme na dotaz klienta. V první části specifikuje kient použitý HTTP příkaz (PROPFIND
) spolu se zdrojem (/index.html
) a použitou verzí protokolu HTTP (HTTP/1.1
). Následují HTTP hlavičky Host, Content-Type a Content-Length. Některé příkazy WebDAVu mohou být ovlivněny odeslanou hlavičkou (například hlavička Destination u příkazu COPY), a proto je nutné dát pozor na to, jaké hlavičky byly odeslány. Příkaz PROPFIND říká serveru, že jeho úkolem bude zjistit vlastnosti připojené k souboru index.html
. Pokud bychom odeslali pouze tuto první část, pak by server nevěděl jaké vlastnosti má hledat, zda má v odeslat jejich hodnoty nebo pouze jejich názvy. Proto je nutné k dotazu připojit také XML dokument.
Nemusím asi připomínat, že XML dokument musí být správně strukturovaný (well-formed), jinak server dotaz nezpracuje. Konkrétně vrátí stavový kód 400 (Bad Request) – špatný dotaz. Dále bych rád upozornil, že ne vždy je XML část dotazu nutná. Například, když budeme chtít smazat zdroj (pomocí příkazu DELETE), není nutné nějaký XML dokument připojit. V tomto případě by nám vystačily příkazy a hlavičky HTTP.
XML
Nyní již k samotnému XML dokumentu. Ten se v první řadě skládá z deklarace XML a určení kódování. Následují elementy, které odpovídají použitému HTTP příkazu. V kořenovém elementu musí být definován jmenný prostor WebDAVu. Pokud používáme vlastní elementy, pak je nutné definovat pro ně vlastní jmenný prostor. WebDAV nekontroluje ani existenci vámi určeného DTD ani správnost použití elementů, proto můžete při zkoušení používat fiktivní adresu DTD.
V našem příkladě je jako kořenový element použit element propfind. Obsah elementu (respektive jeho potomek) říká serveru, jaké vlastnosti má načíst a vrátit v odpovědi. Protože potomkem je element propname, vrátí server pouze názvy vlastností připojených k souboru index.html (více o příkazu PROPFIND a příslušných elementech najdete v příštím článku).
Odpověď serveru
Odpověď serveru začíná opět jako standardní odpověď po HTTP dotazu: protokol stavový kód stavové hlášení
.
Velmi často se při použití WebDAVu setkáme se stavovým kódem 207 (Multi-Status). Jak už název napovídá, jedná se o stav, kdy se při zpracování dotazu klienta vyskytlo několik stavových kódů, které jsou určeny v připojeném XML dokumentu.
Představme si případ, že se snažíme přesunout kolekci pomocí příkazu MOVE. Z několika souborů, které kolekce obsahuje, je jeden zamknutý. Webový server přesune všechny soubory až na tento zamknutý soubor. Server nám musí dát nějakým způsobem vědět, že všechny soubory kromě tohoto byly přesunuty. Odpověď tudíž musí obsahovat několik stavových kódů, které budou mít hodnotu 204 (No Content – tato hodnota nám říká, že přesunutí proběhlo v pořádku) a jeden stavový kód, který bude mít hodnotu 423 (Locked). Jednotlivé stavové kódy lze vyčíst z hodnoty elementu status. (V některém z příštích článků se krátce zmíníme o stavových kódech, ale pokud vás tato problematika zajímá, doporučuji prostudovat specifikaci WebDAVu a protokolu HTTP.)
Budeme pokračovat v analýze XML části zaslané odpovědi. Kořenovým elementem odpovědi serveru je element multistatus. Ten může obsahovat několik elementů response (odpověď), které již obsahují informace o jednotlivých souborech, jenž byly klientovým příkazem ovlivněny. Obvykle bývá v rámci jednoho elementu response jeden element status.
Výsledkem dotazu v našem případě je obsah elementu prop, který nám říká, jaké vlastnosti jsou k souboru index.html připojeny.
V následující tabulce najdete seznam a popis základních elementů, které WebDAV používá pro popis odpovědi:
Element | Popis |
---|---|
multistatus | kořenový element XML dokumentu v případě, že operace vyvolá více než jeden stavový kód |
response | element obsahující výsledek volané metody pro jeden zdroj |
responsedescription | element obsahující popis odpovědi |
href | element obsahující URI zdroje (musí být potomkem elementu response) |
status | stavový kód vyvolaný příkazem WebDAV |
WebDAV používá přes třicet elementů, ale o většině z nich se zmíníme při popisu jednotlivých příkazů.
Na závěr tohoto článku si ukážeme, jaké příkazy můžeme s WebDAVem používat. Použití jednotlivých příkazů pak bude náplní několika příštích článků.
Příkaz | Popis |
---|---|
PROPFIND | výpis vlastností (hodnot nebo jen názvů) |
PROPPATCH | změna, odebrání, připojení nové vlastnosti |
MKCOL | vytvoření nové kolekce |
COPY | kopírování souboru/kolekce |
MOVE | přesunutí souboru/kolekce |
LOCK | uzamčení souboru/kolekce |
UNLOCK | zrušení zámku souboru/kolekce |
DELETE | smazání souboru/kolekce |
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
-
inPage AI: Jak na generování obsahu
18. července 2024 -
Nejlevnější VPS: To je nový Cloud Server Mini od ZonerCloud
4. června 2024 -
Gaming na HDR monitoru: Stojí to za to?
12. srpna 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