Hypermedia a JSON


Honza Javorek

Upozornění! Tento článek vyšel před více než 2 lety. Můžete si jej přečíst v rámci zkoumání minulosti, ale přepokládejte, že dnes se Honza již nemusí s obsahem ztotožňovat.

Více lidí mě poprosilo, abych rozvedl tento tweet:

Nepovedlo se mi to napsat do 160 znaků, tak to zkusím stručně tady na blogu.

Přijde mi, že síla formátu JSON je v tom, že je jednoduchý a přehledný. Myslím si, že je to hlavní důvod, proč jej spousta lidí začalo používat místo XML a oblíbilo si jej. Jakmile chceme ovšem JSON použít jako formát pro hypermedia API, zjistíme, že nám v něm chybí spousta věcí.

Řešení? Přilepíme do něj co potřebujeme a vydáme jako speciální MIME type! Jenže ať koukám jak koukám, ani HAL, ani Collection+JSON, ani Sirennejsou jednoduché a přehledné - stává se z toho stejně špatně čitelná "próza", jakou je ono zatracované XML.

Jenže proč se potom vůbec trápit s JSONem? XML má přece všechny ty věci, kvůli kterým rozšiřujeme JSON. Nejen to - má mnohem víc, např. jmenné prostory nebo dotazovací jazyk. A má to všechno už dlouho, funguje kolem něj ekosystém vyladěných nástrojů, existují připravené a rychlé parsery, lze jej snadno streamovat, atd.

Nechápejte mě špatně - třeba tu nějaké skvělé důvody jsou, ale na první pohled mi to prostě smysl nedává. Pokud se mi líbí jízda na kole, protože s ním na rozdíl od auta můžu po chodníku, prokličkuji kolem kdejaké zácpy a zaparkuji ho u každé lampy, tak z něj přeci nezačnu stavět cykločtyřkolku při prvním zjištění, že na něm domů nepřevezu matraci z IKEA. Prostě si na to vezmu to auto, protože je k tomu dělané - existuje pro tento účel několik desítek let a pokud mě v něm třeba někdo srazí, mám velkou šanci přežít.

Možná je má analogie nepovedená a myšlenka nedotažená - to je v pořádku. Myšlenka je to dost čerstvá a klidně je možné, že mě dobrým komentářem vyvedete z omylu. Snažím se jen pragmaticky uvažovat nad nástroji, jež máme k tvorbě API k dispozici a pokládat si záludné otázky :-) Nechtěl jsem o tom hned psát na blog, ale Twitter, což je to nejlepší místo pro podobně nezralá zamyšlení, mi na to byl už moc těsný.


Honza Javorek

Honza je programátor. Od roku 2011 buduje českou komunitu kolem jazyka Python. V současnosti pomáhá hlavně s propagací aktivit, jako jsou PyLadies, Pyvo, nebo PyCon CZ. Přes den jej najdete v Apiary, kde se stará o Dredd, framework na testování API. Sem tam ho můžete potkat, jak přednáší na srazu nebo na konferenci.




Komentáře