Toto je staršia verzia dokumentu!
Obsah
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
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
- 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
- konvertor XML↔JSON: https://www.site24x7.com/tools/xml-to-json.html
- konvertor JSON→XML: https://jsonformatter.org/json-to-xml
- konvertor XML→JSON: https://jsonformatter.org/xml-formatter
- konvertor XML↔JSON: https://codebeautify.org/jsonviewer
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)) }
