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.
Ajánlott bővítmény a VSCode számára:
Készítsünk egy Node.js projektet:
yarn init -y
vagy:
npm init -y
A yarn parancs használata esetén, lesz egy ilyen package.json állományunk:
{ "name": "app04", "version": "1.0.0", "main": "index.js", "license": "MIT", }
Az npm parancs esetén ez egy kicsit bővebb.
Telepítsük az express csomagot:
npm install express
Használhatjuk az pnpm parancsot is.
Hozzuk létre az app1) 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 app
Teszteljük curl, http vagy res paranccsal, vagy más HTTP klienssel (Postman, Insomnia, Insomnium, HTTPie).
http localhost:8000
A szervert a Ctrl+C billentyűvel állíthatjuk le.
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}`); });
Vegyük észre, hogy console.log() paramétere már nem szimpla aposztrófok között van, helyette backtick karakterek szerepelnek. A változó behelyettesítés csak így működik.
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') });
A kódot tegyük a már meglévő app.get() függvény után.
Indítsuk újra a szervert:
node app
Teszteljük:
http localhost:8000/product
A nodemon (Node Monitor) 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 app --watch app" } }
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
A végpontokkal (endpoint) határozzuk meg, hogy milyen URL-en keresztül kérdezhetünk le adatokat. Az ilyen információkat nevezzük routing-nak. A routing-t kül állományba tesszük, egy routes.js fájlba.
const Router = require('express'); const router = Router(); router.get('/product', (req, res) => { res.send('termék') }); module.exports = router;
Az index.js fájlban importáljuk a routes.js tartalmát:
const express = require('express'); const app = express(); const router = require('./routes'); app.use('/api',router); app.listen(8000, () => { console.log('Listening: localhost:8000'); });
Vegyük észre, hogy az URL-be bekerült egy /api rész.
Tesztelés:
http localhost:8000/api/product
A routes.js fájlban határozzuk meg, hogy mit küldünk a kérésre. Eddig szimpla szöveget küldtünk. A REST API szervereket általában JSON kommunikációval használjuk.
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;
Minden HTTP metódushoz tartozik egy függvény: get(), post(), put(), path(), delete(). Vegyünk fel minden HTTP metódushoz egy routingot.
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
npm create sip@latest
A futtatás során a következőt láthatjuk:
npm create sip@latest > npx > create-sip ? Project name: › app01
Írjuk át a projekt nevét, például api névre.
npm create sip@latest > npx > create-sip ✔ Project name: … api ? Project type: › - Use arrow-keys. Return to submit. ❯ Webpage - Simple webpage: index.html, style.css Web Bootstrap JavaScript Web Node.js ESBuild JavaScript ESBuild TypeScript hai mock API Express API Cancel
Válasszuk az Express API lehetőséget:
✔ Project name: … api ? Project type: › - Use arrow-keys. Return to submit. Webpage Web Bootstrap JavaScript Web Node.js ESBuild JavaScript ESBuild TypeScript hai mock API ❯ Express API - Express API with simple Sequelize Cancel
A következőket láthatjuk:
Create a new Express API... ExpressJS REST API sablon created Read docs/user_doc.md Run next commands: cd api npm install node op key:generate npm run dev
Egy ilyen könyvtárszerkezetet kapunk:
api/ |-app/ | |-controllers/ | | |-authcontroller.js | | `-usercontroller.js | |-database/ | | `-database.js | |-middlewares/ | | `-authjwt.js | |-models/ | | `-user.js | |-routes/ | | `-api.js | `-index.js |-config/ | |-default.json | `-default.json.example |-docs/ | |-dev_doc.md | `-user_doc.md |-templates/ |-test/ |-tools/ |-nodemon.json |-op |-package.json `-README.md
node op key:generate
node op create model employee
node op create controller employee
Fejlesztői szerver indítása:
npm run start
Production indítása:
npm start