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
- https://latenode.com/blog/http-request-methods
- https://www.w3schools.com/TAgs/ref_httpmethods.asp
- 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
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))
}