Úvod
Při rozhodování o vhodném API pro váš případ použití pravděpodobně porovnáte SOAP a REST. Tato dvě řešení jsou dnes nejběžněji používaná API (rozhraní pro programování aplikací).
Čtěte dále a zjistěte, jak se SOAP a REST liší, proč nejsou přímo srovnatelné a kdy je použít.

SOAP vs. webové služby REST:definice
SOAP API je protokol pro zasílání zpráv založený na XML, který umožňuje webovým službám komunikovat a vyměňovat si strukturované informace přes HTTP. Protože protokol používá pro psaní zpráv XML, je nezávislý na platformě a jazyku a používá se ve všech operacích.
REST API je rozhraní pro programování aplikací, široce známé jako webová služba REST API (nebo RESTful API). Rozhraní zajišťuje interakci se službami přenosem reprezentace stavu požadovaného zdroje přes protokol HTTP. Rozhraní API jsou založena na adresách URL (nebo jiných typech URI) a obvykle používají datový formát JSON.

SOAP
SOAP je zkratka pro Simple Object Access Protocol. Byl navržen pro poskytování přístupu k webovým službám dlouho před REST. Protokol zavedl jednoduchý způsob výměny dat a navázání komunikace mezi aplikacemi (i když jsou postaveny na různých platformách nebo s různými jazyky).
Některé z hlavních funkcí SOAP jsou:
- Je založen na XML.
- Je nezávislý na platformě.
- Ukládá vestavěná pravidla a dodržování.
Zprávy SOAP představují požadavky na data odeslaná do rozhraní API SOAP přes protokol aplikační vrstvy (jako je HTTP). Po zpracování každého požadavku server vrátí požadovaná data v XML dokumentu.
Zprávy jsou kódovány jako dokumenty XML a skládají se z následujících prvků:
- Obálka SOAP -
<Envelope>
je kořenový prvek, který identifikuje dokument jako zprávu SOAP. Skládá se z podřízených prvků -<Header>
(volitelné) a<Body>
(povinné). - Záhlaví SOAP -
<Header>
je volitelný podřízený prvek obálky používaný k předávání informací v záhlaví (souvisejících s aplikací) za účelem přidání nových vlastností a funkcí. Obálka může mít více záhlaví. - Tělo SOAP -
<Body>
je povinný podřízený prvek obálky, který obsahuje informace, které si chcete s příjemcem vyměnit. - Chyba SOAP -
<Fault>
je volitelný dílčí prvek těla SOAP používaný pro hlášení chyb a stavových informací, pokud se během zpracování vyskytne problém. Zpráva může mít pouze jednu poruchovou složku.

ODPOČINEK
Na rozdíl od SOAP není REST protokol, ale soubor předpisů, které jsou implementovány mnoha různými způsoby. REST je zkratka pro Representational State Transfer a odkazuje na soubor architektonických principů pro budování aplikací a služeb. Webová služba RESTful je webová služba postavená na těchto principech.
Aby byla webová služba považována za RESTful, je třeba dodržovat určité zásady. Patří mezi ně:
- Kód na vyžádání. Servery mohou v případě potřeby odeslat spustitelný kód klientovi.
- Vrstvený systém. Architektura se skládá z několika vrstev serverů s různými funkcemi.
- Bez státní příslušnosti. Veškerá komunikace klient-server je bezstavová – požadavky nejsou propojeny a informace o klientech se mezi požadavky neukládají.
- Ukládání do mezipaměti. Všechny zdroje by měly být možné uložit do mezipaměti, aby se zefektivnily interakce.
- Jednotné uživatelské rozhraní. Mělo by existovat jednotné rozhraní, které identifikuje zdroje, jejich manipulaci prostřednictvím reprezentace, samopopisných zpráv a hypermédií jako motoru stavu aplikace.
- Architektura klient-server. Klienti a servery jsou volně propojené a navzájem nezávislé. Klient se stará o uživatelské rozhraní a stav, zatímco server spravuje úložiště dat, přístup, správu a zabezpečení.
Aby klient získal prostředky, odešle požadavek na server. Klient může použít čtyři základní typy příkazů:
- ZÍSKAT - pro získávání reprezentace zdrojů.
- PŘIDAT - pro vytvoření zdroje.
- PUT - pro úpravu existujícího zdroje.
- SMAZAT - pro smazání existujícího zdroje.
SOAP vs. webové služby REST:Rychlé srovnání
Nyní, když rozumíte základům rozhraní SOAP a REST API, podívejte se na přímé srovnání, jak se liší podle konkrétních kritérií.
SOAP | ODPOČINEK | |
---|---|---|
DESIGN | standardizovaný protokol | architektonický styl |
PŘÍSTUP | řízeno funkcemi | řízené daty |
STAV | stavové nebo bezstavové | bezstavové |
CACHOVÁNÍ | Volání rozhraní API se neukládají do mezipaměti | Hovory API se vyplácejí |
ZDROJE | větší šířka pásma, další režie | menší šířka pásma, nízká hmotnost |
ZABEZPEČENÍ | Zabezpečení WS, SSL, vestavěné | HTTPS, SSL |
ZPRÁVY FORMÁT | XML | JSON, HTML, XML, YAML, prostý text atd. |
Protokol vs. architektonický styl
Hlavním rozdílem mezi SOAP a REST je jejich design. SOAP je standardizovaný protokol s předem definovanými pravidly.
REST je architektonický styl s doporučeními, omezeními a volnými pokyny.
Data jako služba vs. Data jako zdroj
SOAP je řízen funkcí. Rozhraní API provádějí operace a data jsou dostupná jako služba. REST je obvykle řízen daty. Data jsou dostupná jako zdroj, ke kterému se přistupuje prostřednictvím rozhraní API.
Stateful vs. Stateless
Standardně je SOAP bezstavový, ale lze jej změnit na stavový jednoduchou změnou kódu.
REST je zcela bezstavový a neexistují žádné relace na straně serveru.
Žádná mezipaměť vs. mezipaměť
Ukládání do mezipaměti je časově a zdrojově efektivní funkce, která prohlížeči umožňuje znovu používat data bez odesílání nového požadavku na server. Volání SOAP API nelze ukládat do mezipaměti, zatímco volání REST API lze ukládat do mezipaměti.
Těžký vs. lehký zdroj
Existuje významný rozdíl v požadavcích na zdroje, pokud jde o SOAP a REST. Vzhledem k přenosu užitečného zatížení ve stylu obálky vyžaduje SOAP pro začátek více zdrojů. Navíc také potřebuje větší šířku pásma pro přenos svých datově náročných požadavků.
REST je odlehčené řešení, které vyžaduje méně zdrojů a šířku pásma.
Více zabezpečení vs. méně bezpečné
SOAP má zabezpečení WS, podporu SSL a vestavěnou shodu s ACID. Proto je vhodný pro výměnu citlivých informací a zajištění bezpečnosti na podnikové úrovni.
REST podporuje HTTPS a SSL a běžně se používá pro veřejně dostupné adresy URL. Poskytuje šifrování komunikace pomocí TLS, ale neměl by zpracovávat citlivé informace bez dalších implementací zabezpečení na úrovni serveru.
Jediný formát zpráv vs. různé formáty zpráv
SOAP API podporují pouze protokol zpráv založený na XML. Klienti SOAP často potřebují knihovny třetích stran pro komunikaci s rozhraními API.
Rozhraní REST API obvykle používají JSON a podporují různé další formáty, včetně HTML, XML, YAML, prostého textu a dalších. Klienti REST potřebují pouze knihovny požadavků HTTP zabudované do programovacího jazyka.
Výhody a nevýhody SOAP
Výhody
- Nezávislý na jazyku, platformě a dopravě.
- Standardizované, bezpečné a vhodné pro podniky.
- Vestavěné zpracování chyb a předem zabudovaná rozšiřitelnost pomocí standardů WS.
- Podporuje automatizaci při použití s konkrétními jazyky.
Nevýhody
- Méně výkonné díky velikosti dokumentu XML a vyšším požadavkům na šířku pásma.
- Těsně propojené aplikace, kde komunikace klient-server závisí na smlouvách WSDL.
- Složitější nastavení a testování ve srovnání s REST.
Výhody a nevýhody REST
Výhody
- Jednoduché na pochopení a naučení, snazší na kódování.
- Vyžaduje méně zdrojů a šířku pásma.
- Pro přístup k datům díky identifikátorům URI nejsou potřeba žádné informace o směrování.
- Rychlejší výkon díky funkci ukládání do mezipaměti.
- Autonomní vývoj v různých částech projektu díky oddělení klienta a serveru.
Nevýhody
- Méně bezpečné a nevhodné pro práci s důvěrnými daty.
- Jeho stav bez státní příslušnosti vyžaduje, aby klienti v případě potřeby stav řídili.
- Nelze získat více datových částí v jednom požadavku.
Kdy zvolit SOAP?
Pro operace, které je třeba důkladně kontrolovat a podrobně popsat, nabízí SOAP stabilitu odolnou proti selhání. Jeho předdefinované standardy a omezení zajišťují vyšší bezpečnost ve srovnání s REST. SOAP navíc poskytuje strukturu WS, která podporuje stavové operace. Proto je lepší volbou, když je důležité udržovat stav.
Kdy zvolit REST?
V případech, kdy máte omezenou šířku pásma a zdroje, zvolte REST přes SOAP. Pokud ve vašem případě použití není prioritou udržování stavu informací, rozhodněte se pro bezstavové rozhraní REST API. Konečně, toto řešení je způsob, jak jít ve scénářích, kde hraje klíčovou roli ukládání do mezipaměti a snadné kódování.