REST API: Kľúč k efektívnej komunikácii pri vývoji softvéru

V dnešnej dynamicky sa meniacom prostredí softvérového vývoja hrá pojem REST API dôležitú úlohu pri vytváraní spoľahlivých, interaktívnych a efektívnych aplikácií. Bez ohľadu na to, či si skúsený vývojár, tester, architekt alebo sa s touto témou stretávaš prvýkrát, je dôležité mať jasno v tom, čo REST API je a aký význam má. V tomto článku sa zameriame na základné princípy, definície a dôležitosť REST API v súčasnom svete softvérového inžinierstva.

V súčasnej digitalizovanej ére, keď je komunikácia medzi rôznymi softvérovými komponentmi  nevyhnutná, sa náš pohľad zameriava na REST API, ktoré je základným stavebným kameňom pre túto komunikáciu. Zaujímavosťou je, že pojem „REST“ nesie viacero vrstiev významov a skrýva si za sebou bohatú históriu vývoja softvérových architektúr.

Čo je REST API?

Rozhranie REST API (Representational State Transfer Application Programming Interface, známe aj ako RESTful API) je aplikačné programovacie rozhranie (API alebo webové API), ktoré spĺňa obmedzenia architektonického štýlu REST a umožňuje interakciu s webovými službami RESTful.

Čo je API?

API je súbor definícií a protokolov na vytváranie a integráciu aplikačného softvéru. Niekedy sa označuje ako zmluva medzi poskytovateľom informácií a používateľom informácií – stanovuje obsah požadovaný od spotrebiteľa (volanie) a obsah požadovaný výrobcom (odpoveď). Napríklad návrh API pre meteorologickú službu by mohol špecifikovať, že používateľ zadá poštové smerovacie číslo a výrobca odpovie dvojdielnou odpoveďou, pričom prvou je najvyššia denná teplota a druhou je najnižšia denná teplota.

Inými slovami, ak chceš komunikovať s počítačom alebo systémom, aby si získal informácie alebo vykonal nejakú funkciu, API ti pomôže s tým, čo chceš tomuto systému oznámiť, aby mohol pochopiť a splniť požiadavku.

Čo je REST?

REST je súbor architektonických obmedzení, nie protokol alebo štandard. Vývojári API môžu implementovať REST rôznymi spôsobmi.

Keď sa prostredníctvom rozhrania API REST uskutoční požiadavka klienta, prenesie sa reprezentácia stavu zdroja žiadateľovi alebo koncovému bodu. Táto informácia alebo reprezentácia sa prostredníctvom protokolu HTTP doručuje v jednom z niekoľkých formátov: JSON (Javascript Object Notation), HTML, XLT, Python, PHP alebo obyčajný text. JSON je všeobecne najobľúbenejší formát súborov, ktorý sa používa, pretože napriek svojmu názvu je jazykovo nezávislý, ako aj čitateľný pre ľudí aj stroje.

API vs REST API

Aký je rozdiel medzi API a REST API? Webové rozhrania API si často vyžadujú vyššiu úroveň zabezpečenia, pretože ich používa širšia škála používateľov s rôznymi účelmi. Rozhrania REST API sú zvyčajne určené pre interných používateľov a aplikácie a preto vyžadujú menej bezpečnostných protokolov.

Tak isto je rozdiel aj v protokoloch,  pretože pomocou webového rozhrania API môžeš komunikovať s používateľmi prostredníctvom protokolu HTTP alebo HTTPS.  Všetka komunikácia v rámci rozhrania REST API je však podporovaná len prostredníctvom protokolu HTTP.

Ďalším rozdielom je formát, webové rozhranie API dokáže automaticky konvertovať údaje o requestoch (požiadavkách) a odpovediach do rôznych formátov vrátane formátov JSON, XML, BSON. Na druhej strane rozhranie REST API podporuje iba formát údajov JSON a preto je menej flexibilné.

Téme testovnia web API sme sa venovali v článku API testing v Cypress.

REST API Testing

Testovanie REST API má mnoho dôležitých aspektov:

  1. Funkčnosť: Zabezpečuje, že API funguje podľa špecifikácií a očakávaní. Overuje, či jednotlivé endpointy správne reagujú na rôzne požiadavky.
  2. Výkon: Testuje, ako dobre API zvláda rôzne úrovne zaťaženia. Pomáha identifikovať slabé miesta a optimalizovať výkon.
  3. Bezpečnosť: Overuje, či je API odolné voči útokom a či sú správne implementované mechanizmy autentifikácie a autorizácie.
  4. Spoľahlivosť: Testovanie pomáha identifikovať a odstrániť chyby, čo zvyšuje spoľahlivosť a stabilitu aplikácie.

Pri testovaní REST API sa často používajú tieto postupy:

  • Manuálne testovanie: Tester manuálne volá rôzne endpointy, sleduje odpovede a overuje ich správnosť.
  • Automatizované testovanie: Automatizované nástroje, ako napríklad Postman, umožňujú vytváranie automatizovaných testovacích scenárov. Tieto scenáre môžu byť opakovane spúšťané a pomáhajú rýchlo identifikovať problémy.
  • Výkonnostné testovanie (Performance testing): Skúma, ako API zvláda záťaž a zobrazuje jeho výkon pri rôznych zaťaženiach.

Existujú najmä 4 typy metód testovania API: GET, POST, Delete a PUT.

  • GET – Táto metóda sa používa na zhromažďovanie informácií zo servera prostredníctvom URI (Uniform Resource Identifier). Táto metóda musí iba získavať informácie a nemala by nijako ovplyvňovať údaje.
  • POST – Táto metóda sa používa na vytváranie nových entít, ako aj na odosielanie údajov na server, napríklad informácií o zákazníkoch, nahrávanie súborov atď. prostredníctvom formulárov HTML.
  • PUT – Táto metóda sa používa na aktualizáciu entity alebo vytvorenie novej entity.
  • DELETE – Táto metóda sa používa na odstránenie existujúcich reprezentácií cieľového prostriedku poskytnutého prostredníctvom URI.

REST API Tester

Tester REST API je človek zodpovedný za hodnotenie funkčnosti, výkonu a bezpečnosti RESTful API. Toto zahŕňa zabezpečenie, že API správne reaguje na rôzne HTTP metódy (ako GET, POST, PUT, DELETE), správne spracováva rôzne formáty dát (zvyčajne JSON alebo XML) a adekvátne spracúva chybové odpovede.

Kľúčové zodpovednosti testera REST API

  1. Návrh a vykonávanie restov:
    • Vytváranie testovacích prípadov, ktoré pokrývajú široké spektrum scenárov vrátane pozitívnych, negatívnych a hraničných prípadov.
    • Vykonávanie testov na overenie funkcionality a správania API.
  2. Automatizácia:
    • Vytváranie automatizovaných testovacích skriptov pomocou nástrojov a programovacích jazykov ako Python, Postman alebo cURL na zvýšenie efektívnosti a opakovateľnosti.
    • Automatizácia regresných testov na zabezpečenie, že nové aktualizácie nepoškodia existujúcu funkcionalitu.
  3. Testovanie výkonu:
    • Vykonávanie testov výkonu na hodnotenie časov odpovedí API, priepustnosti a spracovania súčasnosti.
    • Identifikácia rizikových miest výkonu a oblastí na optimalizáciu.
  4. Testovanie bezpečnosti:
    • Hodnotenie bezpečnosti API prostredníctvom penetračných testov a kontroly zraniteľností ako SQL injection, cross-site scripting (XSS) atď.
  5. Testovanie integrácie:
    • Overenie integrácie API s inými systémami alebo službami tretích strán.
    • Zabezpečenie správneho prenosu dát medzi rôznymi komponentami.
  6. Dokumentácia:
    • Vytváranie a udržiavanie testovacej dokumentácie vrátane plánov testov, testovacích prípadov a správ o priebehu testov.
Muž IT tester píše na klávesnici pred dvoma monitormi
Tester Rest API potrebuje mať aj znalosť programovacieho jazyka.

Zručnosti a kvality úspešného testera REST API

  1. Programátorské zručnosti:
  2. Porozumenie HTTP a webových technológií:
    • Solídne pochopenie fungovania HTTP, stavových kódov, hlavičiek a ďalších kľúčových konceptov.
  3. Základy API:
    • Hlboké pochopenie princípov RESTful API, štruktúry API a schopnosť čítať a pochopiť dokumentáciu k API.
  4. Riešenie problémov:
    • Schopnosť identifikovať problémy, analyzovať ich príčiny a navrhovať vhodné riešenia.

REST API vs. SOAP API

1. Architektúra

REST (Representational State Transfer):

  • Je to architektonický štýl, ktorý je založený na princípoch jednoduchosti a priamočiarosti.
  • Využíva štandardné HTTP metódy (GET, POST, PUT, DELETE) na manipuláciu dát.

SOAP (Simple Object Access Protocol):

  • Je to štandardizovaný protokol, ktorý definuje pravidlá pre komunikáciu medzi systémami.
  • Je nezávislý na transportnej vrstve a môže byť použitý s rôznymi protokolmi (HTTP, SMTP, TCP).

2. Formát dát

REST:

  • Používa rôzne formáty dát, najčastejšie JSON alebo XML.
  • Dáta sú čitateľné a ľahko parsovateľné.

SOAP:

  • Využíva XML na štruktúrovanie dát.
  • Je robustný a definuje presnú štruktúru dát, ale XML môže byť ťažšie parsovateľný.

3. Škálovateľnosť:

REST:

  • Je viac škálovateľný, pretože neuchováva žiadny stav medzi požiadavkami od klienta.
  • Každá požiadavka klienta obsahuje všetky informácie potrebné na jej spracovanie.

SOAP:

  • Môže byť menej škálovateľný kvôli uchovávaniu stavu medzi požiadavkami od klienta.
  • Využíva rôzne nastavenia a kontexty pre uchovanie stavu.

4. Rýchlosť:

REST:

  • Často je rýchlejší, pretože využíva jednoduché a priame HTTP volania.

SOAP:

  • Môže byť pomalší kvôli zložitejšiemu spracovaniu a správam, hlavne kvôli použitiu XML.

5. Použiteľnosť:

REST:

  • Je vhodný pre webové služby a moderné aplikácie, často využívaný v API pre mobilné aplikácie.

SOAP:

  • Je vhodný pre komplexné podnikové aplikácie, kde je potrebná prísna kontrola nad transakciami a bezpečnosťou.

REST API WordPress

Vytvorenie REST API vo WordPress je základným krokom pre umožnenie externým aplikáciám alebo službám komunikovať s tvojím WordPress webom a manipulovať s dátami. WordPress ponúka rozhranie REST API, ktoré umožňuje prístup k obsahu a funkcionalitám WordPress webu cez HTTP protokol.

Aktivácia REST API v WordPress:

  1. Prihlásenie do administrátorského rozhrania: Otvor webový prehliadač a prihlás sa do administrátorského rozhrania WordPress.
  2. Navigácia do nastavení API: Choď do časti „Nastavenia“ a zvoľ „Čítanie“.
  3. Zaškrtnutie možnosti „Povoliť sprístupňovanie webu pomocou API“: Nájdi možnosť „Povoliť sprístupňovanie webu pomocou API“ a zaškrtni ju.
  4. Ulož zmeny: Klikni na tlačidlo „Uložiť zmeny“ na konci stránky.

REST API Python

Teraz, keď je REST API povolené v tvojom WordPress projekte, môžeme si ukázať, ako s ním komunikovať pomocou Pythonu. Na to budeme potrebovať knižnicu requests, ktorá umožní posielanie HTTP požiadaviek.

  1. Inštalácia requests: Nainštaluj knižnicu requests pomocou pip:

pip install requests

  1. Python kód na získanie článkov:
import requests

url = "http://your-wordpress-site/wp-json/wp/v2/posts"

response = requests.get(url)




if response.status_code == 200:

data = response.json()

for post in data:

print("Title:", post['title']['rendered'])

print("Content:", post['content']['rendered'])

print("------")

else:

print("Failed to retrieve data. Status code:", response.status_code)

Nahraď „http://your-wordpress-site“ URL adresou tvojho WordPress webu.

  1. Spustenie Python skriptu:

Spusti Python skript a uvidíš zoznam titulkov a obsahu článkov na tvojom WordPress webe.

Týmto spôsobom môžeš použiť REST API vo WordPress a integrovať ho s  Python aplikáciami. Môžeš vytvoriť nové články, aktualizovať existujúce, získavať informácie o článkoch a mnoho ďalšieho pomocou tohto rozhrania.

O autorovi

Michaela Kojnoková

Agile Test Engineer

Po štúdiu informatiky na ŽU a TUKE som sa najviac ponorila do oblasti automatizácie testovania. Okrem toho sa venujem tvorbe webov, databázam, dátovej analytike, umelej inteligencii a strojovému učeniu. Mám rada cestovanie, šport a najviac si užívam čas strávený v prírode s mojimi blízkymi. LinkedIn

Daj nám o sebe vedieť