Tartalomjegyzék
Express - Adatok fogadása
- Szerző: Sallai András
- Copyright © 2023, Sallai András
- Szerkesztve: 2024
- Web: https://szit.hu
JSON adatok fogadása
REST API esetén az adatokat JSON formátumban szoktuk fogadni.
Az express beépítve tartalmaz egy köztes szoftvert erre a célra, csak használatba kell venni:
app.use(express.json());
- app/index.js
const express = require('express'); const app = express(); const router = require('./routes'); app.use(express.json()); app.use('/api',router); app.listen(8000, () => { console.log('Listening: localhost:8000'); });
Projekt készítése
Készítsünk egy receive nevű projektet.
receive/ |-app/ | |-controllers/ | |-routes/ | | `-api.js | `-index.js |-node_modules/ `-package.json
Az alkalmazás belépési pontja továbbra is az index.js fájl.
Telepítsük az express és a nodemon csomagokat:
yarn init -y pnpm install express pnpm install --save-dev nodemon
Készítsük el a kontrollerünket, egyetlen store() függvénnyel:
- app/controllers/employeecontroler.js
const EmployeeController = { store(req, res) { res.json(req.body.name); } } module.exports = EmployeeController;
A store függvény visszaküldi a kapott értéket.
Készítsünk hozzá egy routingot:
- app/routes/api.js
const Router = require('express'); const router = Router(); const EmployeeController = require('../controllers/employeecontrollers'); router.post('/employees', EmployeeController.store); module.exports = router;
Készítsük el a belépési pontot:
- app/index.js
const express = require('express'); const app = express(); const router = require('./routes/api'); app.use(express.json()); app.use('/api',router); app.listen(8000, () => { console.log('Listening: localhost:8000'); });
Készítsünk start scriptet:
{ "scripts": { "start": "nodemon app --watch app" }, }
Indítsuk el az szervert:
npm start
Ellenőrizzük a választ:
http localhost:8000/api/employees http localhost:8000/api/employees name='Árpád'
Amikor nem küldünk adatokat, egy üres választ kell kapjunk. Ha küldünk egy nevet, vissza kell kapjuk a nevet.
Érvényesség ellenőrzése
- app/controllers/employeecontroller.js
const EmployeeController = { store(req, res) { if(!req.body.name) { res.status(400); res.json({ success: false, message: 'Bad request' }); } res.status(200) res.json(req.body.name ); } } module.exports = EmployeeController;
Paraméterek fogadása
Az update és a delete művelet esetén az adott felhasználó azonosítóját paraméterként adjuk át az URL-ben. Például:
http://localost:8000/api/valami/28
A 28 paramétert adjuk át a mintában.
Egészítsük ki az EmployeeController-t egy delete() függvénnyel:
- app/controllers/employeecontroller.js
const EmployeeController = { store(req, res) { if(!req.body.name) { res.status(400); res.json({ success: false, message: 'Bad request' }); } res.status(200); res.json(req.params.id); }, delete(req, res) { if(!req.params.id) { res.status(400); res.json({ success: false, message: 'Bad request' }); } res.status(200) res.json(req.body.name ); } } module.exports = EmployeeController;
A delete esetén egy azonosítót várunk paraméterként. A példánkban ezt is megvizsgáljuk, ha nem érkezett ilyen, akkor sikertelen kérés a válasz.
Vegyünk fel egy új útválasztási sort:
router.delete('/employees/:id', EmployeeController.delete);
A :id mondja meg, hogy „id” néven egy paramétert fogunk küldeni.
A teljes api.js ekkor:
- app/routes/api.js
const Router = require('express'); const router = Router(); const EmployeeController = require('../controllers/employeecontrollers'); router.post('/employees', EmployeeController.store); router.delete('/employees/:id', EmployeeController.delete); module.exports = router;
Adatok frissítése - update
Egészítsük ki az EmployeeControllert egy update függvénnyel:
update(req, res) { if(!req.params.id || !req.body.name) { res.status(400); res.json({ success: false, message: 'Bad request' }); } res.status(201); res.json({ id: req.params.id, name: req.body.name}); }
A teljes kód:
- app/controllers/employeecontroller.js
const EmployeeController = { store(req, res) { if(!req.body.name) { res.status(400); res.json({ success: false, message: 'Bad request' }); } res.status(200) res.json(req.body.name ); }, delete(req, res) { if(!req.params.id) { res.status(400); res.json({ success: false, message: 'Bad request' }); } res.status(200); res.json(req.params.id); }, update(req, res) { if(!req.params.id || !req.body.name) { res.status(400); res.json({ success: false, message: 'Bad request' }); } res.status(201); res.json({ id: req.params.id, name: req.body.name}); } } module.exports = EmployeeController;
Vegyünk fel hozzá egy új routingot:
router.put('/employees/:id', EmployeeController.update);
A teljes api.js:
- app/routes/api.js
const Router = require('express'); const router = Router(); const EmployeeController = require('../controllers/employeecontrollers'); router.post('/employees', EmployeeController.store); router.delete('/employees/:id', EmployeeController.delete); router.put('/employees/:id', EmployeeController.update); module.exports = router;
Teszteljük a put metódust:
http put localhost:8000/api/employees/30 name='Árpád'