Albert Lanne est un consultant Google Ads basé à Paris qui a plus de 10 ans d'expérience dans l'aide aux entreprises pour créer et optimiser leurs campagnes de marketing numérique. Il est spécialisé dans la création de stratégies personnalisées qui maximisent l'impact des dépenses publicitaires de ses clients tout en obtenant des résultats mesurables. Grâce à sa connaissance approfondie de l'exploitation des données, Albert a aidé de nombreuses entreprises à atteindre leurs objectifs par le biais de campagnes très efficaces sur Google Ads. Son expertise ne se limite pas à Google Ads, puisqu'il fournit également des services complets d'optimisation des moteurs de recherche (SEO) afin d'assurer la visibilité des sites Web et du contenu de ses clients sur tous les principaux moteurs de recherche. Soucieux du détail et d'un engagement inébranlable envers l'excellence, Albert se consacre à fournir un service de premier ordre et à obtenir des résultats probants pour chacun de ses clients.
This repo is a training of API REST with express and body parser for my diploma project of Higher Technical Certificate (BTS).
- The master branch have a classe "members" with all CUDR methods (GET,PUT,POST,DELETE).
- The SingleFileCUDR branch have a single file for CUDR
- The HTML branch use the classe "members" with front end vanilla JS.
To test the API i preconise to use postman for HTTP request.
# Install dependecies
npm install
# serve with hot reload at localhost:8080
npm run start
Find the api map with Swaggers at localhost:8080/api/v1/api-docs/#/ and even test it from there.
- This exemple show only for the specific ID
let MembersRouter = express.Router()
MembersRouter.route('/:id')
- Get
.get((req,res)=> {
let index = getIndex(req.params.id);
if (typeof(index) == 'string'){
res.json(error(index))
}else{
res.json(success(members[index]))
}
res.json(success(members[(req.params.id)-1].name))
})
- Overwrite
.put((req,res)=> {
let index = getIndex(req.params.id);
if (typeof(index) == 'string'){
res.json(error(index))
}else{
let same = false;
for (let i = 0; i < members.length; i++){
if (req.body.name == members[i].name && req.params.id != members[i].id){
same = true
break
}
}
if (same){
res.json(error('same name'))
}else{
members[index].name = req.body.name
res.json(success(true))
}
}
})
- Delete
.delete((req,res)=> {
let index = getIndex(req.params.id);
if (typeof(index) == 'string'){
res.json(error(index))
} else {
members.splice(index, 1)
res.json(success(members))
}
})
let MembersRouter = express.Router()
let Members = require('./assets/classes/members-class')(db, config)
MembersRouter.route('/:id')
let MembersRouter = express.Router()
let Members = require('./assets/classes/members-class')(db, config)
MembersRouter.route('/:id')
// Récupère un membre avec son ID
.get(async (req, res) => {
let member = await Members.getById(req.params.id)
res.json(checkAndchange(member))
})
// Modifie un membre avec ID
.put(async(req, res) => {
let updateMember = await Members.update(req.params.id, req.body.name)
res.json(checkAndchange(updateMember))
})
// Supprime un membre avec ID
.delete(async (req, res) => {
let deleteMember = await Members.delete(req.params.id)
res.json(checkAndchange(deleteMember))
})
- Understand async data
console.log('Début')
setTimeout(() => {
console.log('Temps d\'attentes')
},1500)
console.log('Fin')
- Callback
- Promise
new Promise((resolve, reject) => {
setTimeout(()=> {
resolve('All good')
}, 1500)
})
.then(message => console.log(message)) // Dans le cas si c'est ok
.catch(err => console.log(err.message)) // Dans le cas d'une erreur
- Async/Await