< Express

Express - Kontrollerek

Szerző: Sallai András

Copyright © Sallai András, 2023

Szerkesztve: 2024

Licenc: CC Attribution-Share Alike 4.0 International

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.

class EmployeeController { index(req, res) { res.send('működik'); } } 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:

const EmployeeController = require('../controllers/employeecontrollers'); router.get('/employees', EmployeeController.prototype.index);

Objektumban függvény

const EmployeeController = { index(req, res) { res.send('műkdik'); } } module.exports = EmployeeController;

A routingban ekkor így hivatkozunk:

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.

const EmployeeController = { index: (req, res) => { res.send('műkdik'); } } module.exports = EmployeeController;

A routingban ekkor így hivatkozunk:

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
npm install express
npm install --save-dev nodemon

Készítsük el a kontrollerünket, egyetlen index() függvénnyel:

const EmployeeController = { index(req, res) { res.send('műkdik'); } } module.exports = EmployeeController;

Készítsünk hozzá egy routingot:

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:

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

Linkek

https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs/routes (2023)