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

Návratové kódy HTTP

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ácie. 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.
  • RAW je využiteľné pre CSV či TEXT

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


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))
    }