en_USet

Veebiteenused

Veebiteenus vs API

Veebiteenus on selline API, mis kasutab HTTP protokolli nagu veebiserveridki (Apache, Nginx) brauseritega suheldes (Firefox, Google Chrome), mistõttu saab neid ka brauseriga mõningasel määral (ainult GET päringute osas) kasutada.

API (Application Programming Interface) on rakenduste programmiliides, juhiste kogum, mis võimaldab erinevatel rakendustel omavahel suhelda.

SOAP

SOAP on protokoll, mille abil veebiteenused suhtlevad omavahel või klientidega. Nimi tuleneb lühendist Simple Object Access Protocol (lihtne objektidele juurdepääsu protokoll/ простой протокол доступа к объектам).

SOAP API on veebiteenus, mis kasutab SOAP-protokolli sõnumite vahetamiseks serverite ja klientide vahel.

  • UDDI (Universal Description, Discovery and Integration) – veebiteenuste otsimise standard, mis ei leidnud laialdast kasutust ja suleti.
  • WSDL (Web Services Description Language) – SOAP-veebiteenuste kirjeldamise keel
  • SOAP – XML-sõnumite vahetamise protokoll, millel on kohustuslikud osad: Envelope (ümbris), Header (pealkirjad), Body (andmed) ja Fault (vead). Tavaliselt töötab HTTP-protokolli alusel.

REST

REST API on viis, kuidas veebisaidid ja veebirakendused suhtlevad serveriga.

REST (Representational State Transfer) on HTTP-põhine veebiteenuste arhitektuuristiil. Kasutab ressursside jaoks URI-d ja tegevuste jaoks HTTP-meetodeid (GET, POST, PUT, DELETE). Andmete edastamine toimub tavaliselt JSON-vormingus. REST on lihtsam ja kergem kui SOAP, andmemaht on väiksem. Tänapäeval on enamik avalikest API-dest REST API-d.

Mida tähendab RESTful?

RESTful on veebiteenuste arhitektuuriline stiil, mille pakkus välja Roy Fielding 2000. aastal. Selle põhimõtted on järgmised:

  1. Client-Server (kliendi ja serveri eraldatus) – klient ja server on eraldatud ja arendatakse iseseisvalt.
  2. Stateless – server ei säilita kliendi olekut, iga päring sisaldab kogu vajalikku teavet.
  3. Cacheable (vahemällu salvestatav) – vastused võib vahemällu salvestada, et suurendada jõudlust.
  4. Uniform Interface (ühtne liides) – standardiseeritud viis suhtlemiseks URI ja HTTP-meetodite kaudu.
  5. Layered System (kihtsüsteem) – arhitektuur võib olla jaotatud mitmele serveritasandile.
  6. Code on Demand (kood nõudmisel) – server võib saata kliendile täidetavat koodi (nt skripte).
  7. Security (turvalisus) – turvaliste protokollide kasutamine, nt HTTPS (sageli nimetatakse parimaks tavaks).

REST ei ole standard, vaid soovituste kogum lihtsate ja skaleeritavate API-de loomiseks, mis tavaliselt kasutavad HTTP-d, JSON-i ja URL-i. Erinevalt SOAP-ist on REST lihtsam, kergem ja kiirem rakendada. Parimad tavad hõlmavad HTTPS-i kasutamist, dokumenteerimist Swaggeri või API Blueprinti kaudu ja HTTP-koodide aktiivset kasutamist.

Kuidas valida SOAPi ja REST-i vahel?

  • SOAP on keerukam ja mahukam, aga pakub eeliseid nagu:
    • Transpordist sõltumatus (ei pea tingimata kasutama HTTP-d).
    • Sobib hajutatud süsteemidesse.
    • Tugev standardiseeritus ja valmis ws-standardid (nt sisselogimine).
    • Sisseehitatud veahaldus ja automaatika.
  • REST on lihtsam, paindlikum ja populaarsem:
    • Kasutab HTTP-d ja JSON-i, mis on kergesti kasutatavad peaaegu kõigis keeltes.
    • Väiksem õppimiskõver.
    • Väiksem andmemaht ja parem jõudlus.
    • Lähedasem veebitehnoloogiatele.

Valik sõltub projektist: kui vaja tugevat standardit ja keerukat funktsionaalsust, vali SOAP; kui soovid lihtsust, kiiret arendust ja head jõudlust, vali REST.

Kuidas erineb URI RESTis ja SOAPis?

  • REST: Igal ressursil või ressursside kogumil on oma unikaalne URI (nt /invoices, /accounts). URI on arusaadav mitmuslik nimisõna, mis peegeldab andmete tüüpi. URI teenib ressursside identifitseerimise eesmärki serveris.
  • SOAP: URI sõltub kasutatavast sidumisest (binding). Näiteks SOAP HTTP sidumise kasutamisel viitab URI veebiteenusele või lõpppunktile (/accounting-web-service). Meetod seotakse HTTP-meetodiga sidumise kaudu.

Kokkuvõte: REST-is on URI konkreetse ressursi aadress, SOAP-is on URI teenuse või juurdepääsupunkti aadress ning tegevused määratletakse sõnumi sees.

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

  • SOAP: Tavaliselt saadetakse kõik päringud HTTP POST-i kaudu, kus XML-i kehas on märgitud kutsutav meetod ja parameetrid. Mõnikord kasutatakse GET-i, kuid see on haruldane.
  • REST: Kasutatakse standardseid HTTP-meetodeid, mis peegeldavad tegevuse olemust:
    • GET — andmete saamine,
    • POST — ressursi loomine,
    • PUT — ressursi asendamine,
    • PATCH — ressursi osaline uuendamine,
    • DELETE — ressursi kustutamine.

Näide: arve kustutamine — DELETE /invoices/42.

REST-päringud on lihtsad HTTP-päringud meetodi ja URI-ga (endpoint). Server vastab staatusega (200 — edukas, 400–499 — kliendi viga, 500–599 — serveri viga) ja andmetega kehas (tavaliselt JSON või XML).

REST — stateless: iga päring on sõltumatu, server ei säilita staatust päringute vahel, mis muudab süsteemi usaldusväärsemaks ja lihtsamaks.