Veebiteenus vs API
API (rakenduse liides) võimaldab kahel rakendusel andmeid vahetada, olenemata nende programmeerimiskeelest.
Veebiteenus on spetsiaalne API, mis kasutab HTTP protokolli nagu veebilehitsejad (nt Firefox, Chrome). Seda saab kasutada brauseriga, kuid peamiselt ainult GET päringute jaoks.
Kõik veebiteenused on API-d, kuid mitte kõik API-d pole veebiteenused. Näiteks Windows API aitab rakendustel kasutada operatsioonisüsteemi funktsioone. Riistvaraga suhtlemiseks on eraldi API-d (nt OpenGL, Direct3D).
Kaks levinud veebiteenuste tüüpi on SOAP ja REST.
- SOAP määrab sõnumite vahetamise standardi.
- REST on juhiste kogum andmete vahetamiseks HTTP kaudu, pakkudes rohkem vabadust.

SOAP
SOAP (Simple Object Access Protocol) on vanem ja keerukam standard veebiteenuste loomiseks. Kuigi SOAP on väga ulatuslik, on selle kasutamine paindlik, võimaldades suhtlust nii privaatvõrkudes, internetis kui ka e-posti teel.
SOAPi algversioon hõlmas ka UDDI ja WSDL standardeid:
- UDDI võimaldas SOAP-teenuseid avastada, kuid seda ei levinud laialdaselt ja selle arendamine lõpetati 2007. aastal.
- WSDL oli SOAP-teenuste dokumenteerimiseks.
SOAP määratleb XML-põhise sõnumi struktuuri andmete vahetamiseks, kasutades enamasti HTTP protokolli. Igal sõnumil on kohustuslikud osad:
- ENVELOPE määratleb sõnumi alguse ja lõpu,
- HEADER sisaldab serveri töödeldavaid päiseid,
- BODY sisaldab taotlust,
- FAULT käsitleb vigu.

REST
REST (Representational State Transfer) on veebiteenuste arhitektuuristiil, mitte konkreetne protokoll või standard. REST määrab tingimused, millele veebiteenus peaks vastama, et olla kasutajasõbralik ja lihtne.
REST võimaldab suhtlust kahe tarkvaraprogrammi vahel, kus üks programm taotleb teiselt ressursse ja manipuleerib nendega. REST põhineb HTTP-protokollil ning kasutab URI-sid (Uniform Resource Identifier) ressursside määratlemiseks ja HTTP-verbe (GET, POST, PUT, DELETE), et näidata, millist tegevust teostatakse.
Andmeid edastatakse formaatides nagu XML, HTML või JSON, kus JSON on kõige populaarsem tänu lihtsusele ja ühilduvusele.
REST on arendajasõbralik, lihtsam kui SOAP ja vähem sõnarohke, edastades vähem andmeid. Tänu sellele on enamik avalikke API-sid täna REST API-d.
Mida tähendab RESTful?
Enamik API-sid maailmas on RESTful, mis tähendab, et nad järgivad suures osas teatud reeglite või õieti piirangute kogumit, mida tuntakse kui Representational State Transfer ehk REST, mis on alates 2000. aastate algusest olnud de facto standard API-de arendamisel. De facto sellepärast, et ametlikult ei ole REST standard, vaid Roy Fieldingu poolt doktorikraadi väitekirjas kirja pandud parimate praktikate kirjeldus, millele on aegade jooksul lisandunud ka teisi häid tavasid.
Kuidas valida SOAPi ja REST-i vahel?
Valik SOAPi ja RESTi vahel sõltub projekti nõuetest ja tehnoloogilisest keskkonnast.
SOAP eelised:
- Transpordist sõltumatus: SOAP töötab mis tahes protokolliga (nt HTTP, SMTP).
- Sobib hajutatud süsteemidele: SOAP ei vaja otsest ühendust kliendiga.
- Standardiseeritud: SOAPil on täpsed juhised ja valmislahendused (nt ws-standardid).
- Sisseehitatud veahaldus ja automaatika: SOAP pakub tugevat veahaldust ja valmislahendusi keerukate stsenaariumide jaoks.
REST eelised:
- Lihtsus ja paindlikkus: REST on lihtsam ja arendajasõbralikum. Vähem range ja saab kasutada HTTP meetodeid ja URI-sid.
- Paremini toetatud veebiarenduses: REST kasutab JSON-i ja HTTP-d, mis on laialdaselt toetatud enamikus programmeerimiskeeltes.
- Väiksem andmemaht ja parem jõudlus: REST kasutab kompaktsemat JSON formaati võrreldes SOAP-i XML-iga.
Valikusoovitused:
- Kui on vaja keerukamaid funktsioone, nagu turvalisus, sisseehitatud veahaldus või töö mitme süsteemiga, võib SOAP olla parem.
- REST sobib paremini lihtsamate ja efektiivsemate lahenduste jaoks, eriti kui projekt keskendub veebiteenustele ja arendajal on REST kogemus.
Kuidas erineb URI RESTis ja SOAPis?
REST:
RESTful API-s viidatakse andmeressurssidele selgete URI-de abil, mis määratlevad ressursid või kollektsioonid serveris. Need URI-d on tavaliselt nimisõnad mitmuses, nt /invoices
, /accounts
, /payments
. URI-d mängivad keskset rolli, sest need määravad ära, millisele ressursile tehakse päring ja millist tegevust (GET, POST, PUT, DELETE) selle ressursiga tehakse. Iga URI esindab unikaalset ressurssi, mida saab taotleda või muuta.
SOAP:
SOAPis sõltub URI kasutamine bindingust (sidumisest), mis seob SOAP-meetodid HTTP meetoditega (nt SOAP HTTP Binding). URI on siin vähem oluline ja ei viita konkreetsetele ressurssidele nagu RESTis. SOAP API puhul on oluline pigem konkreetne XML-põhine sõnumivahetus ja URI võib lihtsalt viidata veebiteenusele tervikuna, nt /accounting-web-service
, sõltumata ressursitüübist.
Kuidas erineb käsu (ehk tegevuse, mida soovitakse teha) edastamine?
SOAP:
SOAPis kasutatakse SOAP Request-Response mustrit, kus kõik päringud saadetakse POST meetodiga. Andmed, sealhulgas käsud ja argumendid, on kodeeritud XML-dokumendi kujul POST-päringu kehas. Näiteks, kui soovitakse käivitada funktsioon serveris, saadab klient XML-sõnumi, mis määratleb funktsiooni ja selle argumendid. Kuigi SOAP toetab ka GET-päringut (sarnaselt RESTile), kasutatakse seda harva ja POST on tavalisem, isegi andmete küsimiseks.
REST:
RESTis kasutatakse HTTP meetodeid, mis vastavad operatsiooni olemusele:
- GET: Andmete hankimine (nt GET
/invoices/42
toob arve andmed). - POST: Uue ressursi loomine või serverile andmete edastamine töötluseks (nt POST
/invoices
loob uue arve). - PUT: Ressursi uuendamine, asendades see täielikult (nt PUT
/invoices/42
uuendab arve). - PATCH: Ressursi osaline uuendamine (nt PATCH
/invoices/42
uuendab ainult osa arve andmetest). - DELETE: Ressursi kustutamine (nt DELETE
/invoices/42
kustutab arve).
RESTis on igale toimingule kindel HTTP meetod, mistõttu käsud ja nende täitmine on otseselt seotud kasutatava HTTP meetodiga.