Compte rendu de l'atelier Node.js
Avant tout merci !
- Si Le Cid avait été écrit durant l’atelier cela aurait ressemblé à cela
- _
Nous partîmes cinq cents ; mais par un prompt renfort,
Nous nous vîmes trois mille en arrivant au port 3000_ - Finalement Florian avec ce super workshop est le nouveau Corneille
-
Déroulement
- Voilà à peu de chose près comment s’est passé notre soirée
-
- Découverte des outils
- Découverte de l’API Twitter
- Création d’un serveur Node.js
- Création du client Twitter
- Création endpoints/tweets
- Création endpoints API REST (tweets, homepage)
Les outils
- Les outils que nous avons utilisé sont les suivants
-
- Node.JS/Javascript
Vous pouvez télécharger node.js ici même.
- NPM
Le Node Package Manager. Il est livré avec node.js ci dessus
- API Twitter
Une inscription vérifiée est nécessaire pour utiliser l’API Twitter. Vous devez donc avoir un compte twitter et le vérifier avec un numéro de mobile. Ensuite la création des identifiants se fait ici.
C’est une librairie Javascript qui va vous permettre d’enrichir vos cartes interactives.
- Git
Nous vous y attendons nombreux.
Node.js ? C’est quoi
- Plateforme de développement
- Utilise la machine virtuelle V8
- Orienté événement
- Libre sous licence MIT
- Server side
- Single threaded
Standard REST
- Representational state transfer
- Créé en 2000 par Roy Fielding dans sa thèse “Architectural Styles and the Design of Network-based Software Architectures”.
- Échanges client-serveur
- Serveur sans état (chaque requête d’un client contient toute l’information nécessaire)
- Interface uniforme
- Création page HTML & endpoint
Architecture
API Twitter
- Il suffit de s’inscrire sur Twitter, de renseigner un numéro de portable et de créer son App ici
Et voilà à quoi tout cela devrait ressembler
Le code du serveur Node
'use strict'
const express = require('express')
const app = express()
const port = 3000
app.listen(port, (err) => {
if(err){
return console.log('Error', err)
}
}
Le client Twitter
Dans le terminal installer le package desmondmorris/node-twitter
npm install -save twitter
Puis créer un fichier twitter-client.js en utilisant les clés générés plus haut dans l’interface app Twitter
'use strict'
const Twitter = require('twitter')
const client = new Twitter({
consumer_key: process.env.TWITTER_CONSUMER_KEY,
consumer_secret: process.env.TWITTER_CONSUMER_SECRET,
access_token_key: process.env.TWITTER_ACCESS_TOKEN_KEY,
access_token_secret: process.env.TWITTER_ACCESS_TOKEN_SECRET
});
module.exports = client
Le endpoint à la racine
Ou point d’entrée principal
`
/*
- GET /
- Serve front page
*/
app.get(‘/’, (req, res) => {
res.sendFile(__dirname + ‘/index.html’)
})
`
Endpoint /tweet
Ou point d’entrée de notre requête /tweets
`
/*
- GET /tweets
- REST endpoint to get tweets
- @param {String} q paris
- @param {String} latlon 48.8669576,2.3116284,5km
*/
app.get(‘/tweets’, (req, res) => {
if (req.query.q !== null && req.query.latlon !== null && req.query.q !== ‘’ && req.query.latlon !== ‘’) {
twitter.get(‘search/tweets’, {
q: req.query.q,
geocode: req.query.latlon,
count: 100
})
.then(function (tweets) {
// Filter Twitter API results with only tweets with geo field
let filteredTweets = tweets.statuses.filter(o => o.geo !== null)`
res.send(filteredTweets)
})
.catch(function (error) {
res.status(500).send(error)
})
} else {
res.sendStatus(400)
}
})
Page HTML & Leaflet
A très vite !