Tartalomjegyzék
Express - Kontrollerek
- Szerző: Sallai András
- Copyright © Sallai András, 2023
- Szerkesztve: 2024
- Web: https://szit.hu
Kontroller használta
Az előző fejezetben a routing-ban határoztuk meg, mit küldünk vissza a kliens számára. Ezt most egy kontrollerre szeretnénk bízni. A kontroller fogja elkérni az adatokat az adatbázistól. A routing-ban pedig csak megmondjuk melyik kontrollert használjuk.
A kontrollereket JavaScript nyelven több módon is megvalósíthatjuk.
Ezek:
- osztály (class) használata
- objektumban függvények
- objektumban névtelen függvények
Az exportálást is meg lehet oldani több módon, erre most nem térünk ki. Ha több kontrollerre számítunk, érdemes egy külön controllers nevű könyvtárba tenni azokat.
A class használata
Az indexet elnevezést szoktuk használni a függvény vagy metódus számára, ha GET HTTP metódusra válaszolunk.
- app/controllers/employeecontroller.js
class EmployeeController { index(req, res) { res.send('műkdik'); } } module.exports = EmployeeController;
A routing-t a következő példában egy routes nevű könyvtárba fogjuk tenni, az állomány pedig api.js lesz.
A routingban ekkor így hivatkozunk a kontrollerre:
- app/routes/api.js
const EmployeeController = require('../controllers/employeecontrollers'); router.get('/employees', EmployeeController.prototype.index);
Objektumban függvény
- app/controllers/employeecontroller.js
const EmployeeController = { index(req, res) { res.send('műkdik'); } } module.exports = EmployeeController;
A routingban ekkor így hivatkozunk:
- app/routes/api.js
const EmployeeController = require('../controllers/employeecontrollers'); router.get('/employees', EmployeeController.index);
Objektumban névtelen függvény
Egy index nevű tulajdonságot hozunk létre. Az érték pedig egy névtelen függvény.
- app/controllers/employeecontroller.js
const EmployeeController = { index: (req, res) => { res.send('műkdik'); } } module.exports = EmployeeController;
A routingban ekkor így hivatkozunk:
- app/routes/api.js
const EmployeeController = require('../controllers/employeecontrollers'); router.get('/employees', EmployeeController.index);
Dolgozók
Készítsünk egy projektet. Ebben a projektben a routingot egy routes könyvtárba, azon belül az api.js fájlba tesszük. Készítünk egy controllers könyvtárat, abba tesszük a kontrollereket. A projekt neve legyen emp.
emp/ |-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 index() függvénnyel:
- app/controllers/employeecontroler.js
const EmployeeController = { index(req, res) { res.send('műkdik'); } } module.exports = EmployeeController;
Készítsünk hozzá egy routingot:
- app/routes/api.js
const Router = require('express'); const router = Router(); const EmployeeController = require('../controllers/employeecontrollers'); router.get('/employees', EmployeeController.index); 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ítás
Indítsuk el a szervert:
npm start
Tesztelés
Teszteljük például a HTTPie eszköz http paranccsával:
http localhost:8000/api/employees