[[:oktatas:web:express|< Express]] ====== Köztes szoftver ES ====== * **Szerző:** Sallai András * Copyright (c) 2025, Sallai András * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]] * Web: https://szit.hu ===== Bevezetés ===== Minden végponton használhatunk egy vagy több köztes szoftvert. A köztes szoftver mindig a második paraméter. Ha egyetlen köztes szoftvert használunk szimplán átadjuk azt második paraméterként. Ha több köztes szoftverünk van, tömbként adjuk át azokat. app.post('/valami', koztes1, () => {} app.post('/valami', [koztes1, koztes2], () => {} Amit megtehetünk egy köztes szoftverben: * Ellenőrizhetjük az érkező adatokat. * A köztes szoftverben átírhatjuk a klienstől érkező tartalmat. * Elindíthatjuk a választ megszakítva a normál végrehajtást. Milyen jellemző használatai vannak a köztes szoftvernek? A bejövő adatok érvényességének ellenőrzése, vagy azonosítás. ===== Egyszerű köztes szoftver ===== Készítsünk egy egyszerű Express API alkalmazást: Köztes szoftver: const valt = (req, res, next) => { console.log('váltás...'); next(); } export default valt A köztes szoftver használata az egyszerű alkalmazásban: import express from 'express'; const app = express(); const port = 8000; import valt from './mid.js'; app.get('/valami', valt, (req, res) => { res.json({ message: 'Helló' }); }) app.listen(port, () => { console.log(`Example app listening on port ${port}`); }); Ellenőrzés: res localhost:8000/valami ===== Több köztes szoftver ===== Két köztes szoftver létrehozása: const valt1 = (req, res, next) => { console.log('váltás 1 ...'); next(); } const valt2 = (req, res, next) => { console.log('váltás 2 ...'); next(); } export { valt1, valt2 }; Két köztes szoftvert tömbben kell megadni az szerveren a végpont számára. import express from 'express'; const app = express(); const port = 8000; import { valt1, valt2 } from './mid.js'; app.get('/valami', [valt1, valt2], (req, res) => { res.json({ message: 'Helló' }); }) app.listen(port, () => { console.log(`Example app listening on port ${port}`); }); Ellenőrzés: res localhost:8000/valami ===== A post metódus ===== A köztes szoftvert általában olyan adatokon használjuk amik a kérésben érkeznek. const valt1 = (req, res, next) => { console.log('váltás 1 ...'); console.log('Ezt írtad: ', req.body); next(); } export { valt1 }; import express from 'express'; const app = express(); const port = 8000; import { valt1 } from './mid.js'; app.use(express.json()); app.post('/valami', valt1, (req, res) => { res.json({ message: 'Helló' }); }) app.listen(port, () => { console.log(`Example app listening on port ${port}`); }); Ellenőrzés: res post localhost:8000/valami name=Valaki ===== Felhasználónév ellenőrzése ===== A köztes szoftvert általában olyan adatokon használjuk amik a kérésben érkeznek. const valt1 = (req, res, next) => { if(req.body.name != 'Pali') { return res.status(400).json({ message: 'Nem felel meg!' }); } next(); } export { valt1 }; Ha a név nem megfelelő elindítjuk a választ 400-as válasszal. Használat: import express from 'express'; const app = express(); const port = 8000; import { valt1 } from './mid.js'; app.use(express.json()); app.post('/valami', valt1, (req, res) => { res.json({ message: 'Helló' }); }) app.listen(port, () => { console.log(`Example app listening on port ${port}`); }); Ellenőrzés: res post localhost:8000/valami name=Pali res post localhost:8000/valami name=János ===== Tartalom átírása ===== const valt1 = (req, res, next) => { req.body.name = 'Árpád' next(); } export { valt1 }; import express from 'express'; const app = express(); const port = 8000; import { valt1 } from './mid.js'; app.use(express.json()); app.post('/valami', valt1, (req, res) => { res.json({ message: 'Tartalom: ' + req.body.name }); }) app.listen(port, () => { console.log(`Example app listening on port ${port}`); }); Ellenőrzés: res post localhost:8000/valami name=Pali