2 pièce(s) jointe(s)
API REST: méthode POST pour insérer un nouvel objet dans un fichier JSON
Bonsoir!
Je débute en nodeJs et je dois réaliser une API.
J'ai un fichier JSON qui contient des Nouvelles. Je dois pouvoir renvoyer une nouvelle par Id, insérer une nouvelle, supprimer une nouvelle ou mettre à jour une nouvelle.
Pour l'instant j'ai réussi à faire GetById.
:( Je bloque sur POST(pour insérer une nouvelle dans mon JSON)
ci-joint le code de mon newsModels :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| 'use strict'
const fs = require('fs')
const path = require('path')
//task object constructor
var Nouvelle = function(nouvelle) {
this.Id_nouvelle = nouvelle.Id_nouvelle;
this.Nom_nouvelle = nouvelle.Nom_nouvelle;
this.Description = nouvelle.Description;
this.Date_generation = nouvelle.Date_generation;
};
Nouvelle.postNouvelle = function postNouvelle(newsToAdd, res) {
let nouvellePath = path.join(__dirname, '../../data/nouvelles.json')
fs.readFile(nouvellePath, (err, data) => {
if (err) {
res.sendStatus(500)
}
let nouvelles = JSON.parse(data)
let findeNews = nouvelles.find((obj) => obj.Id_nouvelle === newsToAdd.Id_nouvelle)
if (!findeNews) {
//data[newsToAdd] = JSON.parse(data)
fs.writeFile(nouvellePath, JSON.stringify(newsToAdd,null, 4), (error) => {
if(error){
res.sendStatus(500)
console.log('news added')
}
})
res.sendStatus(201)
}
}
)
}
Nouvelle.getNouvelle = function getNouvelle(Id_nouvelle, callback) {
let nouvellePath = path.join(__dirname, '../../data/nouvelles.json') //à modifietr il faut chercher à definir une variable à portée global poura être utilisée dant tous les fichiers
fs.readFile(nouvellePath, (err, data) => {
if (err) {
callback(err)
return
}
let nouvelles = JSON.parse(data)
let findeNews = nouvelles.find((obj) => obj.Id_nouvelle === Id_nouvelle)
if (findeNews) {
console.log(findeNews)
callback(null, findeNews)
}
})
}
module.exports = Nouvelle |
et newsController :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| 'use strict'
//let express = require('express')
let Nouvelle = require('../Models/newsModel')
exports.recuperer_une_nouvelle = function(req, res) {
Nouvelle.getNouvelle(req.params.Id_nouvelle, (err, nouvelle) => {
if (err) {
res.send(err)
}
res.json(nouvelle.Description)
})
}
exports.inserer_une_nouvelle = function(req, res) {
var newsToAdd = new Nouvelle(req.body);
Nouvelle.postNouvelle(newsToAdd, function(err, nouvelle){
if (err) {
res.send(err)
}
else{
res.json(nouvelle)
}
})
} |
Pièce jointe 516893Pièce jointe 516894
voilà à quoi ressemble mon JSON :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| [
{
"Id_nouvelle": "1",
"Nom_nouvelle":"météo du jour",
"Description": "le jeudi 24 octobre il fait 16°",
"Date_generation": "24/10/2019"
},
{
"Id_nouvelle": "2",
"Nom_nouvelle":"Londre ce matin!",
"Description": "les 32 morts dans le camion sont de nationnalité chinoise",
"Date_generation": ""
},
{
"Id_nouvelle": "3",
"Nom_nouvelle":"Vacances scolaires!",
"Description": "Cette année il n'y aura pas de vacances pour les master 2!!!",
"Date_generation": "01/09/2019"
}
] |
Merciii d'avance!!!