- = Simple Object Access Protocol
- posílání strukturovaných zpráv je pomocí XML přes HTTP protokol (či jiné protokoly (SMTP, JMS))
- zajišťuje komunikaci mezi komponentami systému
- hodně balastu kolem, je to hodně strikně typované (není to kvůli tomu tolik oblíbené)
- díky tomu oblíbené ve státní správě a bankovnictví → je to spolehlivé
- ale v dnešní době se spíše využívá REST API a JSON, pro jejich jednoduchost, větší rychlost atd.
Složení SOAP zprávy
- zprávy chodí v obálkách (= Envelope), což je takový kontejner pro zprávu
- v obálce jsou:
- Header
- obsahuje metadata (routing informace, bezpečnostní prvky, kontext k posílání atd.)
- Body (payload)
- obsah zprávy v XML
- Attachment
- binární data, která nemohla být serializována do XML
- Header
Příklady:
Request:
POST /InvoiceService HTTP/1.1
Host: example.com
Content-Type: text/xml
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetInvoice xmlns="http://example.com/invoice">
<InvoiceId>12345</InvoiceId>
</GetInvoice>
</soap:Body>
</soap:Envelope>Response:
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetInvoiceResponse xmlns="http://example.com/invoice">
<Invoice>
<Id>12345</Id>
<Amount>1500.00</Amount>
<Currency>CZK</Currency>
</Invoice>
</GetInvoiceResponse>
</soap:Body>
</soap:Envelope>WSDL
- = Web Services Description Language
- XML dokument, který popisuje SOAP službu (podobně jako API specifikace)
- má podobné součásti jako Části interface
- tj. definice datových typů, operace (a jejich input/output objekty), formáty, specifikace URL endpointu pro konkrétní službu
- má podobné součásti jako Části interface
- existují různé nástroje na generování tříd a služeb pro komunikaci přes SOAP podle formátu ve WSDL (je to machine-readable XMLko)