NodeJS + Express partie 4 : Créer un CRUD API

Voici une série d’articles qui vous permettra créer des applications backend avec NodeJS + Express.

Cette série est la suite de ma série sur les bases de NodeJS. Si vous n’avez pas les connaissances de bases en NodeJS lisez cette série d’abord : Intro…


This content originally appeared on DEV Community and was authored by Eric Le Codeur

Voici une série d'articles qui vous permettra créer des applications backend avec NodeJS + Express.

Cette série est la suite de ma série sur les bases de NodeJS. Si vous n'avez pas les connaissances de bases en NodeJS lisez cette série d'abord : Introduction à NodeJS

Node.js est aujourd'hui un incontournable, il est donc essentiel pour un développeur de le maitriser.

Je vais donc publier un nouvel article environ au deux jours et petit à petit vous apprendrez tout ce qu'il y a à savoir sur Node.js + Espress

Pour ne rien manquer suivez moi sur twitter : https://twitter.com/EricLeCodeur

CRUD API

Maintenant que nous connaissons les concepts de base, il est temps de construire une véritable API CRUD (créer, lire, mettre à jour, supprimer)

Nous allons construire toutes ces routes CRUD :

Create: POST /api/products

Read all: GET /api/products

Read: GET /api/product/1

Update: PUT /api/products/1

Delete: DELETE /api/products/1

Return response status

Avec une API CRUD vous pouvez retourner des données mais aussi un code statut.

Voici une liste de certains codes status et leur signification

res.status(200) // Ok
res.status(201) // Created
res.status(204) // No content
res.status(400) // Bad request
res.status(401) // Unauthorized
res.status(403) // Forbidden
res.status(404) // Not found
res.status(500) // Server error

Créez le fichier "data.js" et copiez/collez ce code

const products = [
    { id: 1, name: 'iPhone', price: 800 },
    { id: 2, name: 'iPad', price: 650 },
    { id: 3, name: 'iWatch', price: 750 }
]

module.exports = products

Charger les données et démarrer le serveur

const express = require('express')
const app = express()
const products = require('./data.js')

app.listen(5000, () => {
    console.log('server is listening on port 5000')
})

Create: POST /api/products

app.use(express.json()) // parse json body content

app.post('/api/products', (req, res) => {
    const newProduct = {
        id: products.length + 1,
        name: req.body.name,
        price: req.body.price
    }
    products.push(newProduct)
    res.status(201).json(newProduct)
})

app.use(express.json) est un middleware qui prend le contenu JSON et crée les propriétés req.body associées. (ex. req.body.name et req.body.price)

Le res.status(201).json(newProduct) définit le status de la réponse de retour sur 201 (créé) et renvoie également les données newProduct en format JSON.

Read all: GET /api/products

app.get('/api/products', (req, res) => {
    res.json(products)
})

Read: GET /api/product/1

app.get('/api/products/:productID', (req, res) => {
    const id = Number(req.params.productID)
    const product = products.find(product => product.id === id)

    if (!product) {
        return res.status(404).send('Product not found')
    }
    res.json(product)
})

Comme vu dans la partie 2, nous avons d'abord récupéré le productID du router parameter.

Ensuite, nous vérifions si ce produit existe et envoyons une réponse en conséquence.

res.json(product) envoie le produit au format JSON avec un code d'état 200 ok.

Update: PUT /api/products/1

app.use(express.json()) // parse json body content

app.put('/api/products/:productID', (req, res) => {
    const id = Number(req.params.productID)
    const index = products.findIndex(product => product.id === id)
    if (index === -1) {
        return res.status(404).send('Product not found')
    }
    const updatedProduct = {
        id: products[index].id,
        name: req.body.name,
        price: req.body.price
    }
    products[index] = updatedProduct
    res.status(200).json('Product updated')
})

Delete: DELETE /api/products/1

app.use(express.json()) // parse json body content

app.delete('/api/products/:productID', (req, res) => {
    const id = Number(req.params.productID)
    const index = products.findIndex(product => product.id === id)
        if (index === -1) {
        return res.status(404).send('Product not found')
    }
    products.splice(index,1)
    res.status(200).json('Product deleted')
})

Conclusion

C'est tout pour aujourd'hui, suivez moi sur twitter : https://twitter.com/EricLeCodeur afin d'être avisé de la parution du prochain article (d'ici deux jours).


This content originally appeared on DEV Community and was authored by Eric Le Codeur


Print Share Comment Cite Upload Translate Updates
APA

Eric Le Codeur | Sciencx (2021-10-30T11:43:51+00:00) NodeJS + Express partie 4 : Créer un CRUD API. Retrieved from https://www.scien.cx/2021/10/30/nodejs-express-partie-4-creer-un-crud-api/

MLA
" » NodeJS + Express partie 4 : Créer un CRUD API." Eric Le Codeur | Sciencx - Saturday October 30, 2021, https://www.scien.cx/2021/10/30/nodejs-express-partie-4-creer-un-crud-api/
HARVARD
Eric Le Codeur | Sciencx Saturday October 30, 2021 » NodeJS + Express partie 4 : Créer un CRUD API., viewed ,<https://www.scien.cx/2021/10/30/nodejs-express-partie-4-creer-un-crud-api/>
VANCOUVER
Eric Le Codeur | Sciencx - » NodeJS + Express partie 4 : Créer un CRUD API. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2021/10/30/nodejs-express-partie-4-creer-un-crud-api/
CHICAGO
" » NodeJS + Express partie 4 : Créer un CRUD API." Eric Le Codeur | Sciencx - Accessed . https://www.scien.cx/2021/10/30/nodejs-express-partie-4-creer-un-crud-api/
IEEE
" » NodeJS + Express partie 4 : Créer un CRUD API." Eric Le Codeur | Sciencx [Online]. Available: https://www.scien.cx/2021/10/30/nodejs-express-partie-4-creer-un-crud-api/. [Accessed: ]
rf:citation
» NodeJS + Express partie 4 : Créer un CRUD API | Eric Le Codeur | Sciencx | https://www.scien.cx/2021/10/30/nodejs-express-partie-4-creer-un-crud-api/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.