[[:oktatas:web:back-end_framework:express|< Express]]
====== Express - Kezdés ======
* **Szerző:** Sallai András
* Copyright (c) 2023, Sallai András
* Szerkesztve: 2024
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]]
* Web: https://szit.hu
===== Az Expressről =====
Az Express segítségével gyorsan készíthetünk webalkalmazást JavaScript nyelven, Node.js alapokon.
Kezeli a HTTP kéréseket, támogatja a middleware használatát.
===== VSCode =====
Bővítmény:
* Node.js Modules Intellisense
===== Projekt készítése =====
Készítsünk egy Node.js projektet:
yarn init -y
Lesz egy ilyen package.json állommányunk:
{
"name": "app04",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
}
Telepítsük az express csomagot:
pnpm install express
Hozzuk létre az src könyvtárban az index.js állományt, a következő tartalommal:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('helló')
});
app.listen(8000);
Indítsunk el a szervert:
node src
Teszteljük curl vagy http paranccsal, vagy más HTTP klienssel.
http localhost:8000
A szervert a Ctrl+C billentyűvel állíthatjuk le.
===== A listen() függvény =====
A listen() függvény képes fogadni második paraméterként egy callback függvényt.
Írjunk egy névtelen függvényt, ami kiírja milyen porton fut a szerver:
app.listen(8000, () => {
console.log('Listening: localhost:8000');
});
Ha most elindítjuk a szervert, informál bennünket arról, hogy a localhost:8000 címen és porton figyel.
A port változóba:
const port = 8000;
app.listen(port, () => {
console.log(`Listening: localhost:${port}`);
});
===== Végpont =====
Most adjunk valamilyen végpontot a szerverünkhöz. Legyen például egy product nevű végpont:
app.get('/product', (req, res) => {
res.send('termék')
});
Indítsuk újra a szervert:
node src
Teszteljük:
http localhost:8000/product
===== A nodemon =====
A nodemon lehetővé teszi, hogy ne kelljen minden fejlesztés után, újraindítanunk a szervert.
Telepítsük:
pnpm install --save-dev nodemon
Írjunk egy scriptet a package.json fájlban:
{
"scripts":
"start": "nodemon src --watch src"
}
Ha fut a szerver állítsuk le, majd indítsuk újra a start script segítségével:
npm start
Teszteljük az elérést:
http localhost:8000/product
===== Külön routing =====
const Router = require('express');
const router = Router();
router.get('/product', (req, res) => {
res.send('termék')
});
module.exports = router;
const express = require('express');
const app = express();
const router = require('./routes');
app.use('/api',router);
app.listen(8000, () => {
console.log('Listening: localhost:8000');
});
Tesztelés:
http localhost:8000/api/product
===== JSON válasz =====
JSON választ a json() függvénnyel készíthetünk:
const Router = require('express');
const router = Router();
router.get('/product', (req, res) => {
res.json({ name: 'memória'});
});
module.exports = router;
===== Metódusok =====
Minden HTTP metódushoz tartozik egy függvény: get(), post(), put(), path(), delete().
const Router = require('express');
const router = Router();
router.get('/product', (req, res) => {
res.json({ msg: 'get metódus'});
});
router.post('/product', (req, res) => {
res.json({ msg: 'post metódus'});
});
router.put('/product', (req, res) => {
res.json({ msg: 'put metódus'});
});
router.patch('/product', (req, res) => {
res.json({ msg: 'patch metódus'});
});
router.delete('/product', (req, res) => {
res.json({ msg: 'delete metódus'});
});
module.exports = router;
Teszteljük őket a http paranccsal:
http localhost:8000/api/product
http post localhost:8000/api/product
http put localhost:8000/api/product
http patch localhost:8000/api/product
http delete localhost:8000/api/product