Veebiteenused

1. Veebiteenus vs API

  • Veebiteenus – programm, mis pakub mingit teenust internetis (nt andmete jagamine).
  • API – Programmeerimisliides ehk API on vahend, mis lubab erinevatel tarkvaradel omavahel andmeid ja funktsioone jagada, olenemata sellest, millises keeles need loodud on. Veebiteenus on API eriliik, mis suhtleb üle HTTP-protokolli, sarnaselt tavapäraste veebilehtede ja brauserite vahelisele andmevahetusele. Selle tõttu saab osa veebiteenuste funktsionaalsusest kasutada ka otse brauserist, eriti info pärimisel (GET-päringud).
  • Kõik veebiteenused on API-d, kuid mitte iga API töötab veebis. Näiteks Windowsi API võimaldab rakendustel kasutada operatsioonisüsteemi sisseehitatud võimalusi, nagu teateakende kuvamine. Samuti on olemas API-d, mis võimaldavad suhelda riistvaraga, näiteks graafikaprogrammide jaoks mõeldud OpenGL, Metal või Direct3D.

2. SOAP

  • SOAP (Simple Object Access Protocol) on vanem veebiteenuste standard, mille algselt töötas välja Microsoft. Algne akronüüm SOAP on tänapäeval muutunud lihtsalt nimeks. See protokoll võimaldab keerukamat ja struktureeritud andmevahetust XML-sõnumite kaudu, tavaliselt HTTP-protokolli abil, kuid sobib ka teiste protokollide jaoks.
  • SOAP-sõnum koosneb peamistest osadest:
  • ENVELOPE – sõnumi raamistus
  • HEADER – täiendavad päiseandmed
  • BODY – sõnumi põhisisu
  • FAULT – vigade käsitlemine
  • Varasemates SOAP-specifikatsioonides kuulusid ka UDDI (teenuste leidmine) ja WSDL (teenuste dokumenteerimine), kuid UDDI arendus lõpetati 2007. aastal.

3. REST

  • REST (Representational State Transfer) on veebiteenuste loomise arhitektuuristiil, mitte konkreetne protokoll ega standard. See kirjeldab põhimõtted, mida peaks järgima hästi disainitud veebiteenus, kuid ei määra täpselt, kuidas sõnumid välja näevad. REST võimaldab tarkvaral omavahel suhelda HTTP-protokolli kaudu, kasutades URI-sid (Uniform Resource Identifier) ressursside identifitseerimiseks.
  • REST põhineb HTTP-meetoditel nagu GET, POST, PUT ja DELETE, ning andmete vahetamiseks kasutatakse tavaliselt XML-i, HTML-i või peamiselt JSON-i.
  • REST on lihtsam ja arendajasõbralikum kui SOAP – vähem keeruline ja üleliia formaalne. Seetõttu on REST muutunud tavapäraseks valikuks avalike API-de loomisel.

4. RESTful

Enamik kaasaegseid API-sid on RESTful, mis tähendab, et need järgivad REST-i põhimõtteid. Alates 2000. aastate algusest on REST saanud de facto standardiks API-de loomisel. Kuigi REST ei ole ametlik standard, tugineb see Roy Fieldingi doktoritöös kirjeldatud parimatele praktikatele, mida on aastate jooksul edasi arendatud ja täiustatud.

Kuidas valida SOAPi ja REST-i vahel

Valik sõltub projekti vajadustest ja keskkonnast: mõnes keeles, nagu Java, on SOAP-i tugi tugev, samas kui teistes, näiteks JavaScriptis, võib SOAP-i kasutamine olla keerulisem. REST on laialdasemalt levinud ja arendajatele tuttavam, mistõttu seda valitakse tihti eelistatult.

SOAPi eelised:

  • Transpordist sõltumatus: SOAP töötab mitme protokolliga, kuna kogu info on XML-is; REST sõltub peamiselt HTTP-st.
  • Hajutatud süsteemid: SOAP ei vaja otsest kliendiühendust, REST seevastu vajab.
  • Standardiseeritus: SOAP järgib rangelt standardeid, REST-i disain on rohkem paindlik.
  • WS-standardid ja veahaldus: SOAP sisaldab valmislahendusi sõnumite töötlemiseks ja vigade haldamiseks.

5. RESTi eelised SOAPi ees:

  • Lihtsus ja paindlikkus: REST on lihtsam kasutada ja arendajasõbralikum.
  • Vähem täiendavat tarkvara: REST töötab hästi HTTP ja JSON-iga, mida enamik keeli toetab.
  • Madalam õppimiskõver: RESTi API toimib sarnaselt tavalisele veebiserverile, andmed edastatakse JSON-is.
  • Parem jõudlus ja võrgu kasutus: REST kasutab kompaktsemat JSON-i, SOAP kasutab mahukamat XML-i.
  • Hea ühilduvus veebitehnoloogiatega: REST kasutab loomulikult HTTP meetodeid ja URL-e.

6. URI erinevused RESTis ja SOAPis

  • REST: iga andmeüksus (ressurss) on eraldi URI-ga kättesaadav serveri andmebaasis. URI-d on nimisõnad mitmuses, näiteks /invoices, /accounts, /payments, /orders. Need aitavad eristada erinevat tüüpi andmeressursse. Näiteks sisselogimiseks kasutatakse kollektsiooni /sessions. URI ise ei määratle tegevust – see on lihtsalt ressurssi identifitseeriv aadress, tegevus määratakse HTTP-meetodi (GET, POST, PUT, DELETE) kaudu.
  • SOAP: URI sõltub kasutatavast bindingust. Näiteks SOAP HTTP Bindingu puhul määrab URI teenuse aadressi, nagu /accounting-web-service. Konkreetne tegevus (nt kasutaja andmete pärimine või salvestamine) määratakse SOAP-i sõnumis, mitte URI-s.

7 .Kuidas erineb käsu (ehk tegevuse, mida soovitakse teha) edastamine

SOAPis on andmeedastus HTTP kaudu kahte tüüpi:

  • SOAP Request-Response: Klient saadab alati POST päringu, kus XML dokument sisaldab vajalikku funktsiooni ja argumente.
  • SOAP Response: Sarnaneb REST-ile, kus GET päringud saadetakse andmete saamiseks ja need edastatakse URL-ina (/func1?arg1=foo&arg2=bar), kuid seda kasutatakse harva.

REST-is kasutatakse HTTP meetodeid vastavalt päringu tüübile:

  • GET: Andmete hankimine kollektsioonist või üksikust elemendist.
  • PUT: Elemendi andmete täielik uuendamine.
  • POST: Uute andmete saatmine või olemasoleva elemendi muutmine.
  • PATCH: Olemasoleva elemendi osalised muutmised.
  • DELETE: Elemendi või andmete kustutamine kollektsioonist.