REST architektonická omezení

REST je zkratka pro reprezentativní státní převod, termín vytvořený Roy Fieldingem v roce 2000. Jedná se o styl architektury pro navrhování volně propojených aplikací přes HTTP, který se často používá při vývoji webových služeb. REST nevynucuje žádné pravidlo týkající se toho, jak by mělo být implementováno na nižší úrovni, pouze dal pokyny pro návrh na vysoké úrovni a nechal vás přemýšlet o své vlastní implementaci.

ve svém posledním zaměstnání jsem navrhl RESTful API pro významnou telekomunikační společnost na dva dobré roky. V tomto příspěvku, budu sdílet své myšlenky na rozdíl od standardních konstrukčních postupů. Možná se mnou nesouhlasíte v několika bodech, a to je naprosto v pořádku. Budu rád diskutovat o cokoliv od vás s otevřenou myslí.

začněme se standardními designovými specifickými věcmi, abychom objasnili, co „Roy Fielding“ chce, abychom postavili. Pak budeme diskutovat o mých myšlenkách, které budou více směřovat k jemnějším bodům, zatímco budete navrhovat své RESTful API.

architektonická omezení

REST definuje 6 architektonických omezení, která dělají jakoukoli webovou službu-skutečné RESTful API.

  1. Jednotné rozhraní
  2. Klient–server
  3. bez státní Příslušnosti,
  4. Cacheable
  5. Vrstvený systém
  6. Kód na vyžádání (volitelné)

Jednotné rozhraní

Jako omezení sám název vztahuje, MUSÍTE se rozhodnout, Api rozhraní pro zdroje uvnitř systému, které jsou vystaveny API spotřebitele a dodržovat nábožensky. Zdroj v systému by měl mít pouze jedno logické URI, a to by mělo poskytnout způsob, jak načíst související nebo další data. Vždy je lepší synonymizovat zdroj s webovou stránkou.

žádný jednotlivý zdroj by neměl být příliš velký a měl by obsahovat vše, co je v jeho reprezentaci. Kdykoli je to relevantní, zdroj by měl obsahovat odkazy (HATEOAS) ukazující na relativní URI pro načtení souvisejících informací.

Také zastoupení zdrojů v systému by měl dodržovat zvláštní pokyny, jako jsou konvence, odkaz formátů nebo formátu dat (XML nebo JSON).

všechny zdroje by měly být přístupné prostřednictvím společného přístupu, jako je HTTP GET a podobně upraveny pomocí konzistentního přístupu.

jakmile se vývojář seznámí s jedním z vašich API, měl by být schopen postupovat podobně jako u jiných API.

Klient–server

Toto omezení v podstatě znamená, že klientská aplikace a aplikační server MUSÍ být schopen vyvíjet samostatně bez závislosti na ostatních. Klient by měl znát pouze zdroje Uri, a to je vše. Dnes je to standardní praxe ve vývoji webových aplikací, takže z VAŠÍ strany není vyžadováno nic fantastického. Jen tak dál.

servery a klienti mohou být také nahrazeny a vyvíjeny nezávisle, pokud se nezmění rozhraní mezi nimi.

bez státní příslušnosti

Roy fielding se inspiroval HTTP, takže se odráží v tomto omezení. Proveďte všechny interakce klient-server bez státní příslušnosti. Server neukládá nic o nejnovějším požadavku HTTP, který klient provedl. Každý požadavek bude považovat za nový. Žádné sezení, žádná historie.

Pokud aplikace klienta musí být stavové aplikace pro koncové uživatele, kde uživatel přihlásí jednou a dělat jiné povolené operace po tom, pak každý požadavek od klienta by měla obsahovat všechny informace nezbytné pro doručení žádosti, včetně ověření a autorizace detaily.

mezi požadavky se na serveru neukládá žádný kontext klienta. Klient je zodpovědný za správu stavu aplikace.

Cacheable

v dnešním světě je ukládání dat a odpovědí do mezipaměti nanejvýš důležité, kdekoli jsou použitelné / možné. Webová stránka, kterou zde čtete, je také verzí HTML stránky v mezipaměti. Ukládání do mezipaměti přináší zlepšení výkonu na straně klienta a lepší prostor pro škálovatelnost serveru, protože zatížení se snížilo.

v REST se ukládání do mezipaměti použije na zdroje, pokud je to vhodné, a pak se tyto zdroje musí prohlásit za cacheable. Ukládání do mezipaměti lze implementovat na Serveru nebo na straně klienta.

dobře spravované ukládání do mezipaměti částečně nebo úplně eliminuje některé interakce klient-server, což dále zlepšuje škálovatelnost a výkon.

Vrstvený systém

ZBYTEK umožňuje použití vícevrstvé architektury systému, kde nasazení Api na server, a ukládat data na server B a ověření požadavků na Server C, například. Klient obvykle nemůže zjistit, zda je připojen přímo ke koncovému serveru nebo zprostředkovateli.

kód na vyžádání (volitelné)

toto omezení je volitelné. Většinu času budete posílat statické reprezentace zdrojů ve formě XML nebo JSON. Ale když potřebujete, máte možnost return executable code podporovat část vaší aplikace, např., klienti mohou volat vaše API získat UI widget Vykreslování kód. Je to povoleno.

všechna výše uvedená omezení vám pomohou vytvořit skutečně RESTful API a měli byste se jimi řídit. Ještě pořád, občas, možná zjistíte, že porušujete jedno nebo dvě omezení. Nebojte se; stále děláte RESTful API – ale ne „opravdu RESTful.“

Všimněte si, že všechna výše uvedená omezení jsou nejvíce úzce souvisí s WWW (web). Pomocí RESTful API můžete s webovými službami dělat to samé, co děláte s webovými stránkami.

byl tento článek užitečný?

Ano
Ne

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.

More: