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: ```php $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: ```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))
}
```
