Felhasználói eszközök

Eszközök a webhelyen


oktatas:web:rest_api:rest_api

< REST API

REST API

REST-ről

  • reprezentatív állapotátvitel

Roy Fielding 2000-ben mutatta be.

A REST egy szoftverarchitektúra-stílus.

Megszorítások, aminek meg kell feleljen egy REST alkalmazás:

  • kliens-szerver
  • URL-n keresztül elérhető
  • állapotmentes
  • rétegelt rendszer
  • gyorstárazható
  • egységes interfész köti össze a szervert és a klienst
  • igényelt kód - a szerver kódokat ad át a kliensnek futtatásra (JavaScript)

Ha egy alkalmazás megfelel ezeknek a követelményeknek, akkor azt RESTful alkalmazásnak nevezzük.

Ha egy fejlesztő ért mind a frontend, mind a backend fejlesztéshez őt nevezzük Full Stack fejlesztőnek. Az ilyen fejlesztő tehát tud külön Frontendet fejleszteni, de Backendet is.

Néhol használják a Full Stack szót a Frontend és Backend együttes használatára. Ebben az esetben is arról van szó, hogy a két rész között HTTP protokollt használunk. HTTP nélkül nem beszélhetünk Full Stack technológiáról.

Új API technológiák:

A REST API előtt, a webszolgáltatások hálózaton keresztüli kommunikációjához a SOAP protokollt használták, ami XML alapú, ami más alkalmazásprotokollokat használnak, például távoli eljáráshívás.

REST API

A REST API HTTP protokollal:

  • az API HTTP protokollon teszi elérhetővé az adatokat
  • az erőforráson CRUD műveletek elvégezhetők
  • HTTP módok használata: GET, POST, PUT/PATCH, DELETE

Az összeállított URL-k végeit, végpontoknak nevezzük. A végpontokat tetszőlegesen állítjuk össze.

Példa végpontokra:

GET 		/dolgozok           	– az összes elem lekérése
GET 		/dolgozok/janos  	– egy elem lekérése
POST		/dolgozok		– beszúrás, új dolgozó beszúrása
PUT		/dolgozok/janos	        – janos adatainak frissítése
PATCH   	/dolgozok/janos	        – janos valamely tulajdonságát változtatjuk
DELETE	        /dolgozok		– az összes törlése
DELETE          /dolgozok/janos	        – janos törlése

A végpontok CRUD műveleteket valósítanak meg. Az egyes CRUD műveletekhez a következő HTTP metódusokat szoktuk rendelni:

CRUD művelet    Metódus Végpontpélda
------------------------------------
create		POST	/dolgozok
read		GET	/dolgozok[/id]
update		PUT	/dolgozok/id
update		PATCH	/dolgozok/id
delete		DELETE	/dolgozok[/id]

Visszatérési értékek

A GET
GET 200 (OK)
GET 404 Bad request
GET 404 (Not found)
A POST
POST 201 (Created) siker, a választ sikerleírást tartalmaz
POST 206 (Partial Content
POST 304 (Not Modified
POST 416 (Range Not Satisfiable)
A PUT
PUT 200 (OK) siker, a választ sikerleírást tartalmaz
PUT 204 (No Content) Ha, ok de nincs a válaszban tartalom
PUT 409 (Conflict)
PUT 415 (Unsupported Media Type
A DELETE válaszai
DELETE 202 (Accepted) sikeres alkalmazás
DELETE 204 (No Content) ha nem kell tovább információ
DELETE 200 (OK) ha válasz állapotleírást tartalmaz

Végpont

A végpont a kérelem benyújtásához használt URL. Például:

http://zold.lan/dolgozok

A http://zold.lan/dolgozok végpont a dolgozók halmazának erőforrását szolgálja ki számunkra.

Előfordul, hogy ugyanahhoz az erőforráshoz többféle végponton hozzáférhetünk:

Egyazon végpont különböző erőforrásokat szolgáltathat, ha például szűrök, keresek rendezek. A végpont a http://zold.lan/dolgozok.

Szoftverek REST API-hoz

A REST API teszteléséhez erre a célra kialakított kliens programot használunk. Egyik elterjedt kliens a Postman, amit itt ajánlunk az Insomnia.

httpie

A httpie telepíthető npm paranccsal, de Linuxon linuxos csomag is rendelkezésre áll. Telepítés után egy http parancsot kapunk.

Teszteléshez írjuk be:

http get http://localhost/valami/

Apache szerver esetén, ha csak ennyit írunk:

http://localhost/valami

Egy átirányítás történik a következő címre:

http://localhost/valami

Ez jól látszik a http parancs kimenetében:

http get http://localhost/valami/

A kimenet ehhez hasonló:

HTTP/1.1 301 Moved Permanently
Connection: Keep-Alive
Content-Length: 310
Content-Type: text/html; charset=iso-8859-1
Date: Fri, 22 Oct 2021 20:43:09 GMT
Keep-Alive: timeout=5, max=100
Location: http://localhost/valami/
Server: Apache/2.4.51 (Debian)

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://localhost/valami/">here</a>.</p>
<hr>
<address>Apache/2.4.51 (Debian) Server at localhost Port 80</address>
</body></html>

Ha „/” a végére kerül, akkor kimenet:

HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Length: 9
Content-Type: text/html; charset=UTF-8
Date: Fri, 22 Oct 2021 20:44:30 GMT
Keep-Alive: timeout=5, max=100
Server: Apache/2.4.51 (Debian)

Valami weblap

Ha localhost-t használunk rövidíthetünk:

http :8000
http :/valami

Alapértelmezett a GET:

http zold.lan

Ha van adat, akkor POST

http zold.lan valami=érték

A ? előtt mindig \ jel szükséges:

http get http://localhost:8000/index.php\?products

JSON adatok átadása:

http post http://localhost:8000/index.php\?products < newProduct.json

Bearer token

http post http://localhost:8080/api/checkToken 
-A bearer -a eyJhbG...

Vegyünk fel egy felhasználót:

http post http://localhost:8080/api/registry
name='dani' password='titok'

Lépjünk be a felhasználóval:

http post http://localhost:8080/api/login
name='dani' password='titok'

Védett útvonalak tesztje:

http post http://localhost:8080/api/employees 
name='Pista' city='Pécs' salary=398 
-A bearer -a eyJhbGc...
http -A bearer -a eyJhbGc... post 
http://localhost:8080/api/employees 
name='Pista' city='Pécs' salary=398 

Insomnia

Beszerzés

Windowsra létezik portable verzió is:

Insomnia.Core-2021.5.3-portable.exe

Debian GNU/Linux 11-re az Ubuntus verzió nem telepszik. Használjuk helyette a .tar.gz kiterjesztésű fájl. Ebben találunk egy futtatható binárist.

Használat

Jobb oldalon van egy „Create” gomb.

  • Create > Request Collection

Ez előugró ablakban adjunk a kollekciónak nevet. Például:

app01

Kattintsunk a „Create” gombra.

Baloldalon, a + ikonra kattintva hozzunk létre egy új könyvtárat:

  • New Folder Shift+Ctrl+N

Az „app01” könyvtár sávjába vitt egér kurzor megjelenít egy legördülő listadobozt. Erre kattintva, az előugró menüből válassza a „New Request” lehetőséget, egy kérés létrehozásra. Az előugró ablakban például:

get employees

HATEOAS

A HATEOAS a Hypermedia as the Engine of Application State rövidítése.

A HATEOAS szerint REST API-ba érdemes olyan linkeket elhelyezni, amelyek segítségével az alkalmazás önfelfedező lesz.

Ha egy kliens lekért valamit, azt is látja, hogyan tud továbbmenni.

{
    "dolgozo": {
        "azonosito": "BD132",
        "nev": "Bari Emese",
        "szuletes": "1995-03-04",
        "links": {
            "beosztas": "dolgozok/BD132/beosztas",
            "fizetes": "dolgozok/BD132/fizetes"
        }
    }
}

REST API leírás

Végpontleírás példa:

Végpont Metódus CRUD Azonosítás Siker Kudarc Leírás
/api/employees GET READ nem 200 OK 400 Bad Request
404 Not found
Összes dolgozó lekérése
/api/employees POST CREATE igen 201 Created 400 Bad Request
404 Not found
Új dolgozó hozzáadása
/api/employees/{id} PUT UPDATE igen 200 OK 400 Bad Request
404 Not found
Dolgozó frissítése

Linkek

oktatas/web/rest_api/rest_api.txt · Utolsó módosítás: 2024/01/27 17:47 szerkesztette: admin