Kihagyás

Express keretrendszer

Az Express egy Node.js keretrendszer, amelyet a webalkalmazások és az API-k készítésére használnak. Segítségével könnyen és gyorsan készíthetünk webalkalmazásokat, és az alkalmazásunkat könnyen bővíthetjük a különböző middleware-ekkel. Folytassuk a korábban megkezdett példát, és nézzük meg, hogyan tudjuk az Express keretrendszert használni.

Telepítés

Az előző fejezetben már láttuk, hogy a Node.js telepítésekor a npm is telepítésre kerül. Az npm egy csomagkezelő, amely segítségével könnyen telepíthetünk különböző csomagokat a projektünkbe. Az Express telepítéséhez a következő parancsot kell kiadnunk a terminálban:

npm install express --save

Ekkor az Express keretrendszer telepítve lesz a projektünkbe, és a package.json fájlban is megjelenik a függőség.

Példa

{
    "name": "demo",
    "version": "1.0.0",
    "description": "",
    "main": "index.js",
    "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
    },
    "author": "",
    "license": "ISC",
    "dependencies": {
        "express": "^4.19.2"
    }
}

A példában látható, hogy a dependencies részben megjelenik az Express keretrendszer.

Mindemellett az is látható, hogy a telepítést követően létrejön egy node_modules mappa, amelyben az Express keretrendszer fájljai találhatók, valamint egy package-lock.json fájl is, amely a telepített csomagok verzióit tartalmazza.

Az új struktúra a következő:

Demo
|-- node_modules
|-- package-lock.json
|-- package.json

Alapok

Kezdjük azzal, hogy létrehozunk egy új fájlt, amelyben az Express keretrendszert használjuk. A fájl neve legyen app.js. Az Express keretrendszer használatához először importálnunk kell a modult a projektünkbe. Ezt a következő módon tehetjük meg:

const express = require('express');

Ezután létrehozunk egy Express alkalmazást, amelyet egy változóban tárolunk:

1
2
3
const express = require('express');

const app = express();

Az Express keretrendszer segítségével létrehozott alkalmazásunkat a listen metódussal tudjuk elindítani, és megadhatjuk, hogy melyik porton fusson az alkalmazás:

1
2
3
4
5
6
7
const express = require('express');

const app = express();

app.listen(3000, () => {
    console.log('Az alkalmazás elindult a 3000-es porton.');
});

Ezután a terminálban kiadhatjuk a következő parancsot:

node app.js

Ekkor az alkalmazásunk elindul a 3000-es porton, és a konzolon megjelenik az Az alkalmazás elindult a 3000-es porton. üzenet.

Útvonalak

Az Express keretrendszer segítségével könnyen tudunk útvonalakat definiálni az alkalmazásunkban.

Az útvonalakat a get metódussal tudjuk definiálni, amelynek két paramétere van: az útvonal és egy visszahívási függvény, amelyet a kérésre hívunk meg.

Az alábbi példában egy egyszerű útvonalat definiálunk, amely a gyökérre mutat:

const express = require('express');

const app = express();

app.get('/', (req, res) => {
    res.send('Hello World!');
});

app.listen(3000, () => {
    console.log('Az alkalmazás elindult a 3000-es porton.');
});

Ekkor az alkalmazásunk a gyökérre érkező kérésekre a Hello World! választ fogja visszaküldeni.

Az útvonalakat a post, put, delete és all metódusokkal is definiálhatjuk, amelyek a megfelelő HTTP metódusokat reprezentálják.

Middleware

A middleware-ek használata Node.js-ben (különösen az Express keretrendszerben) fontos szerepet játszik a webalkalmazások fejlesztésében. A middleware-ek olyan függvények, amelyeket a request (kérés) és a response (válasz) objektumok között hajtanak végre. Ezek a függvények lehetővé teszik, hogy a kérés beérkezésekor különböző feldolgozási lépéseket hajtsunk végre, mielőtt a kérés eljut a végső kezelőhöz (pl. egy route handlerhez).

A middleware-ek fő funkciói:

  1. Kérés előfeldolgozása: A middleware-ek lehetővé teszik, hogy a beérkező HTTP-kéréseket előfeldolgozzuk, mielőtt azok elérnék a végső kezelőt. Például:
    • Hitelesítés: Ellenőrizhetjük, hogy a kérés jogosult-e a további feldolgozásra.
    • Adatok validálása: Ellenőrizhetjük a kérésben lévő adatok helyességét.
    • Kérés naplózása: Naplózhatjuk a beérkező kéréseket.
  2. Közbenső feldolgozás: A middleware-ek képesek módosítani a kérés és a válasz objektumokat, hogy további információkat adjanak hozzá vagy módosítsák a meglévő információkat. Például:
    • Parszolás: A JSON vagy form adatokat feldolgozhatjuk és a req.body-ba helyezhetjük.
    • CORS kezelés: Beállíthatjuk a CORS fejléceket a válaszban.
  3. Kontroll átadása: A middleware-ek továbbadhatják a vezérlést a következő middleware-nek vagy végső kezelőnek a next() függvény hívásával. Ez lehetővé teszi a middleware-ek láncolását, ahol minden middleware elvégez egy feladatot, majd továbbadja a kérés feldolgozását.
  4. Hibakezelés: A hibakezelő middleware-ek képesek kezelni a korábbi middleware-ek vagy végső kezelők által generált hibákat. Ezek a hibakezelő middleware-ek tipikusan a végén találhatók az összes többi middleware után, és általában egy err argumentummal rendelkeznek.

Példa

Az alábbi példában egy egyszerű middleware-t definiálunk, amely kiírja a konzolra a kérés URL-jét:

const express = require('express');

const app = express();

// Egyszerű middleware, ami naplózza a kéréseket
app.use((req, res, next) => {
    console.log(`${req.method} ${req.url}`);
    next(); // Átadja a vezérlést a következő middleware-nek vagy route handlernek
});

app.get('/', (req, res) => {
    res.send('Hello World!');
});

app.listen(3000, () => {
    console.log('Az alkalmazás elindult a 3000-es porton.');
});

Ebben a példában a middleware naplózza a beérkező kérések típusát és URL-jét, majd átadja a vezérlést a következő middleware-nek vagy route handlernek a next() hívásával.