[[oktatas:web:javascript:javascript_fetch|< JavaScript fetch]]
====== JavaScript fetch - egyszerű láncolt ======
* **Szerző:** Sallai András
* Copyright (c) Sallai András, 2021, 2023
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]]
* Web: https://szit.hu
===== JSON szerver =====
A fetch() függvény nem használható ha az URL, file protokollt tartalmaz.
Ezért telepítünk egy json-server nevű szervert, ami HTTP protokollon
keresztül szolgálja ki a JSON fájlt.
npm install --save-dev json-server
Összeállítunk egy JSON fájlt, ami dolgozok adatait tartalmazza:
{
"employees": [
{
"id": 1,
"fullname": "Nagy János",
"city": "Szolnok",
"salary": 8400000
},
{
"id": 2,
"fullname": "Páros Lajos",
"city": "Szeged",
"salary": 3430000
},
{
"id": 3,
"fullname": "Aranyos Enikő",
"city": "Szolnok",
"salary": 4245000
}
]
}
Indítás:
json-server --watch employees.json --port 8000
===== Listázás =====
Az összes olvasása, listázása.
var url = 'http://localhost:8000/employees/';
fetch (url)
.then(res => res.json())
.then(data => {
console.log(data);
}).catch(err => {
console.log(err);
});
Az alapértelmezett metódus a GET, ezért ezt nem kell megadni.
A fetch() függvény csak egy URL-t kap paraméterként.
===== Hozzáadás =====
Új dolgozó felvételéhez POST metódusra van szükség, az
új dolgozó adataira; de azt is meg kell mondani, milyen formátumban
küldjük az adatokat.
var url = 'http://localhost:8000/employees/';
fetch (url,{
method: "post",
body: JSON.stringify({
id: 5,
fullname: 'Táncos Imre',
city: "Szeged",
salary: 2250000
}),
headers: {
"Content-Type": "application/json"
}
})
.then(response => response.json())
.then(result => {
console.log(result);
}).catch(err => {
console.log(err);
});
A példában id-t is küldünk, de ez nem kötelező. A json-server
generál automatikusan.
===== Frissítés =====
var url = 'http://localhost:8000/employees/5';
fetch (url,{
method: "put",
body: JSON.stringify({
id: 5,
fullname: 'Parkin Ede',
city: 'Kátrány Levente',
salary: 2175000
}),
headers: {
"Content-Type": "application/json"
}
})
.then(response => response.json())
.then(result => {
console.log(result);
}).catch(err => {
console.log(err);
});
===== Törlés =====
var url = 'http://localhost:8000/employees/5';
fetch (url,{
method: "delete",
}).catch(err => {
console.log(err);
});
===== Linkek =====
* https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API
* https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch (2021)