Felhasználói eszközök

Eszközök a webhelyen


oktatas:web:back-end_framework:express:adatok_fogadasa_es

Ez a dokumentum egy előző változata!


< Express

Express - Adatok fogadása ES

JSON adatok fogadása

REST API esetén az adatokat JSON formátumban szoktuk fogadni.

Az express beépítve tartalmaz egy köztes szoftvert erre a célra, csak használatba kell venni:

app.use(express.json());
app/index.js
import express from 'express'
const app = express()
import routes from './routes/api.js'
 
app.use(express.json()) // <--
app.use(routes)
 
app.listen(8000, () => {
  console.log('Server running on port 8000')
})

Projekt készítése

Készítsünk egy receive nevű projektet.

receive/
  |-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:

npm init -y
npm install express
npm install --save-dev nodemon
package.json
{
    "type": "module",
}

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

app/controllers/employeecontroller.js
const EmployeeController = {
  store(req, res) {
    res.json(req.body.name)
  }
}
 
export default EmployeeController

A store függvény visszaküldi a kapott értéket.

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

app/routes/api.js
import Router from 'express'
const router = Router()
import EmployeeController from '../controllers/employeecontroller.js'
 
router.post('/employees', EmployeeController.store)
 
export default router

Készítsük el a belépési pontot:

app/index.js
import express from 'express'
const app = express()
import routes from './routes/api.js'
 
app.use(express.json()) // <--
app.use('/api', routes)
 
const PORT = 8000
app.listen(PORT, () => {
  console.log(`Server running on port ${PORT}`)
})

Készítsünk start scriptet:

{
  "scripts": {
    "start": "nodemon app --watch app"
  },
}

Indítsuk el az szervert:

npm start

Ellenőrizzük a választ:

res localhost:8000/api/employees
res localhost:8000/api/employees name='Árpád'

Amikor nem küldünk adatokat, egy üres választ kell kapjunk. Ha küldünk egy nevet, vissza kell kapjuk a nevet.

Érvényesség ellenőrzése

app/controllers/employeecontroller.js
const EmployeeController = {
 
    store(req, res) {
        if(!req.body.name) {
            res.status(400)
            res.json({ 
                success: false, 
                message: 'Bad request'
            });
        }
        res.status(200)
        res.json(req.body.name )
    }
}
 
export default EmployeeController

Paraméterek fogadása

Az update és a delete művelet esetén az adott felhasználó azonosítóját paraméterként adjuk át az URL-ben. Például:

http://localost:8000/api/valami/28

A 28 paramétert adjuk át a mintában.

Egészítsük ki az EmployeeController-t egy delete() függvénnyel:

app/controllers/employeecontroller.js
const EmployeeController = {
 
    store(req, res) {
        if(!req.body.name) {
            res.status(400);
            res.json({ 
                success: false, 
                message: 'Bad request'
            });
        }
        res.status(200);
        res.json(req.params.id);
    },
    delete(req, res) {
        if(!req.params.id) {
            res.status(400);
            res.json({ 
                success: false, 
                message: 'Bad request'
            });
        }
        res.status(200)
        res.json(req.body.name );        
    }
}
 
export default EmployeeController;

A delete esetén egy azonosítót várunk paraméterként. A példánkban ezt is megvizsgáljuk, ha nem érkezett ilyen, akkor sikertelen kérés a válasz.

Vegyünk fel egy új útválasztási sort:

router.delete('/employees/:id', EmployeeController.delete);

A :id mondja meg, hogy „id” néven egy paramétert fogunk küldeni.

A teljes api.js ekkor:

app/routes/api.js
const Router = require('express');
const router = Router();
const EmployeeController = require('../controllers/employeecontrollers');
 
router.post('/employees', EmployeeController.store);
router.delete('/employees/:id', EmployeeController.delete);
 
export default router;

Adatok frissítése - update

Egészítsük ki az EmployeeControllert egy update függvénnyel:

    update(req, res) {
        if(!req.params.id || !req.body.name) {
            res.status(400);
            res.json({
                success: false,
                message: 'Bad request'
            });
        }
        res.status(201);
        res.json({ id: req.params.id, name: req.body.name});
    }

A teljes kód:

app/controllers/employeecontroller.js
const EmployeeController = {
 
    store(req, res) {
        if(!req.body.name) {
            res.status(400);
            res.json({ 
                success: false, 
                message: 'Bad request'
            });
        }
        res.status(200)
        res.json(req.body.name );
    },
    delete(req, res) {
        if(!req.params.id) {
            res.status(400);
            res.json({ 
                success: false, 
                message: 'Bad request'
            });
        }
        res.status(200);
        res.json(req.params.id);
    },
    update(req, res) {
        if(!req.params.id || !req.body.name) {
            res.status(400);
            res.json({
                success: false,
                message: 'Bad request'
            });
        }
        res.status(201);
        res.json({ id: req.params.id, name: req.body.name});
    }
}
 
module.exports = EmployeeController;

Vegyünk fel hozzá egy új routingot:

router.put('/employees/:id', EmployeeController.update);

A teljes api.js:

app/routes/api.js
const Router = require('express');
const router = Router();
const EmployeeController = require('../controllers/employeecontrollers');
 
router.post('/employees', EmployeeController.store);
router.delete('/employees/:id', EmployeeController.delete);
router.put('/employees/:id', EmployeeController.update);
 
module.exports = router;

Teszteljük a put metódust:

res put localhost:8000/api/employees/30 name='Árpád'
oktatas/web/back-end_framework/express/adatok_fogadasa_es.1753648918.txt.gz · Utolsó módosítás: 2025/07/27 22:41 szerkesztette: admin