RestApi

Dáta sem, dáta tam.

Nástroje používateľa

Nástoje správy stránok


restapi_baseinfo

REST API - ZÁKLADNÉ INFO

Representational State Transfer Application Programming Interface zabezpečuje komunikáciu cez internet pomocou HTTP protokolu. Klient formou dotazu na server žiada odpovede na svoje dotazy. Tieto dotazy majú hlavný cieľ údaje uložiť, získať, aktualizovať či odstrániť (CRUD). Klient dotazy smeruje na server tak, že špecifikuje cestu ku zdroju (resources) a žiada využiť metódu (POST, GET, PUT/PATCH, DELETE). Dotaz môže obsahovať autentifikáciu klienta a telo so správou (DATA). Server odpovedá kažému klientovi zvlášť.
Každý dotaz by mal dostať odpoveď, ktorá obsahuje návratový kód a ak je dotaz oprávnený či vykonateľný, tak aj požadované dáta.

Systém CRUD

je model operácií s dátami pri komunikácii cez web rozhranie. Univerzálnosť ho predurčuje pre širokú škálu nasadenia v rôznych systémoch.
Tvoria ho funkcie:

  • CREATE - vytváranie → SQL INSERT
  • READ - načítanie → SQL SELECT
  • UPDATE - editácia → SQL UPDATE
  • DELETE - výmaz → SQL DELETE

REST API

využíva základné formulácie CRUD pre vytvorenie web rozhrania. Komunikujú ním klient a server pomocou HTTP metód.
Výčet metód:

  • GET- READ without change → 200=OK, 404=NOT_FOUND, 400=BAD_REQUEST
  • POST - CREATE in sources → 201=CREATED_IN_PATH, 200=OK, 204=OK_EMPTY
  • PUT - UPDATE/CREATE in source → 200=UPDATED, 201=CREATED, 204=OK_EMPTY
  • DELETE - DELETE → 200=OK, 202=ACCEPTED_AND_WAITING, 204=OK_EMPTY
  • PATCH - PARTIAL_UPDATE → rare
  • HEAD
  • OPTIONS
  • CONNECT
  • TRACE

Resources

sú zdroje pre aplikáciu metód. Jedná sa o cestu vyjadrujúcu zdoj.
Príklad:

  • GET /users
  • GET /users/1

Príklad najčastejších:

  • 200 = OK → úspech
  • 201 = CREATED → úspešné vytvorenie
  • 400 = BAD_REQUEST → neplatný požiadavok
  • 404 = NOT_FOUND → zdroj nenájdený
  • 500 = INTERNAL_SERVER_ERROR → chyba servera

Formát dát

  • JSON - je moderný spôsob komunikáciekde dáta sú napohľad dobre čitateľné. Dáta sú ohraničené zloženými, alebo hranatými zátvorkami. Jednotlivé dáta sú priradené ku kľúčom. Kľúče i dáta ohraničujú dvojité úvodzovky a sú spojené dvojbodkou. Kombinácia zátvoriek oddeľuje zapúzdrené dáta a zoznamy. Odriadkovania a medzery nie sú potrebné, avšak pri prehliadaní sú vhodné (pretty formátovanie je na konci článku). Formát JSON slúži výhradne pre dáta, neumožňuje serializáciu metód, čo v dnešnej dobe už nie je potrebné.
  • XML - je funčný formát využívaný pred JSON. Tagy sú obdoba kľúčov. Vnorenie je taktiež pomocou tagov a prípadne ich skráteného ukončenia. SOAP rozširuje možnosti XML
  • RAW - sú neorganizované dáta a je využitie môžetta byť pre CSV, TEXT alebo binárne dáta (napríklad komprimované), obrázky, programy a iné.

príklad JSON

{"id":1,"name":"JSON","commands":[{"name": "POST","description": "create record"},{"name": "GET","description": "read data"}],"allowed_statuses":[200, 400, 404, 500]}
(formátovaný v závere článku)

príklad XML

<?xml version="1.0" encoding="UTF-8" ?><doc><id>1</id><name>JSON</name><commands><name>POST</name><description>create record</description></commands><commands><name>GET</name><description>read data</description></commands><allowed_statuses>200</allowed_statuses><allowed_statuses>400</allowed_statuses><allowed_statuses>404</allowed_statuses><allowed_statuses>500</allowed_statuses></doc>
(formátovaný v závere článku)

Poznámka

Z príkladu prevodu JSON na XML je vidieť istú nekompatibilitu. XML sme museli zabaliť do "doc", ale inak konverzie sú možné. V PHP je konverzia XML→JSON štandardných formátov bezproblémová. Pri načítaní XML feedov do webShopu sa pravdepodobne nevyhnete úpravám špeciálnych znakov a polí… Online konvertory sú spomenuté v tomto článku v linkoch.
príklady:

$jsonData = simplexml_load_file($xml_data_file);

Autentifikácia

overuje identitu dotazujúceho sa klienta.
Najbežnejšie spôsoby overenia:

  • API key - Authorization: (anyApiKey) → odporúča sa použiť len HTTPS, kedy je zašifrovaný
  • Basic - Authorization: Basic base64(username:password) → pre HTTPS
  • OAuth - Authorization: Bearer (token) → časté využitie s podporou Scopes a Expirácie
  • JWT - Authorization: Bearer \<JWT-token\> → v kombinácii s OAuth2.0

Linky na zdroje

Ukážky k článku

Formátovaný JSON z príkladu:

{
    "id": 1,
    "name": "JSON",
    "commands": [
        {
            "name": "POST",
            "description": "create record"
        },
        {
            "name": "GET",
            "description": "read data"
        }
    ],
    "allowed_statuses": [
        200,
        400,
        404,
        500
    ]
}

Formátovaný XML z príkladu:

<?xml version="1.0" encoding="UTF-8" ?>
<doc>
    <id>1</id>
    <name>JSON</name>
    <commands>
        <name>POST</name>
        <description>create record</description>
    </commands>
    <commands>
        <name>GET</name>
        <description>read data</description>
    </commands>
    <allowed_statuses>200</allowed_statuses>
    <allowed_statuses>400</allowed_statuses>
    <allowed_statuses>404</allowed_statuses>
    <allowed_statuses>500</allowed_statuses>
</doc>

Pretty formátovanie Java a Kotlin:

  {
    alertLD.setUniversalMessage(
        new GsonBuilder()
            .setPrettyPrinting()
            .create()
            .toJson(new Gson()
                .fromJson(response, JsonObject.class)
            )
    );
  }
    {
        showAlert("serialized response",
            GsonBuilder()
                .setPrettyPrinting()
                .create()
                .toJson(data))
    }
restapi_baseinfo.txt · Posledná úprava: od attilajancik