RestApi

Dáta sem, dáta tam.

Nástroje používateľa

Nástoje správy stránok


restapi_baseinfo

Toto je staršia verzia dokumentu!


REST API - ZÁKLADNÉ INFO

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

  • Nečíslovaný zoznamJSON 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: ```json {

  "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 <?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: ```java

{
  alertLD.setUniversalMessage(
      new GsonBuilder()
          .setPrettyPrinting()
          .create()
          .toJson(new Gson()
              .fromJson(response, JsonObject.class)
          )
  );
}

``` ```kotlin

  {
      showAlert("serialized response",
          GsonBuilder()
              .setPrettyPrinting()
              .create()
              .toJson(data))
  }

```

restapi_baseinfo.1753701394.txt.gz · Posledná úprava: od attilajancik