[[: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