De nos jours , on prends beaucoup de photos , il est toujours dur de les classer, et c’est long de le faire à la main, et si on utilisait les dernières avancées du machine learning pour les classer automatiquement  avec un système de tags?

Tout au long de cette série de 4 épisodes  nous allons créer une API en NodeJs , qui au téléchargement de l’image lui assigne différents tags, on pourra demander à l’API les photos par tags.

Prérequis :

Ce tutoriel requiert une connaissance de base du javascript et des dernières features du Javascript : l’ES6 , si le terme ne vous est pas familier je vous invite a regarder https://github.com/lukehoban/es6features . Vous devez avoir aussi une connaissance basique de la ligne de commande, car nous allons utiliser le terminal dans certains cas.

Partie 1: le Serveur Node.js

Tout d’abord, si vous n’avez pas installé Node.js, il faudra vous rendre ici  pour l’installer  , Node.js viens avec son gestionnaire de dépendances ,  npm.

Node.js est un interpréteur en ligne de commande permettant de coder des serveur en javascript. Le module http, déjà intégré à Node.js de base, permet de recevoir et traiter les requêtes http ainsi que d’y répondre.

On crée notre serveur :

//content of index.js
const http = require('http')
const port = 3000

const requestHandler = (request, response) => {
console.log(request.url)
response.end('Hello World!')
}

const server = http.createServer(requestHandler)

// bind the server on port
server.listen(port, (err) => {
if (err) {
return console.log('something bad happened', err)
}

console.log(`server is listening on ${port}`)
})

Et on le démarre avec la commande suivante :

$ node index.js

Maintenant avec votre navigateur vous pouvez allez visiter l’adresse suivante: http://localhost:3000, vous devriez avoir l’affichage du texte « Hello World ».

Explications :

on fait un require du module http et on fait écouter notre serveur sur le port 3000. Le requestHandler va être invoqué à chaque foi que vous allez accéder à l’url ci-dessus

la méthode listen sur l’objet serveur précédemment instancié va demander au serveur d’écouter sur la valeur de la variable port ( 3000 dans notre cas ) , s’il y a une erreur ( si par exemple le port est déjà utilisé ) l’erreur apparaîtra dans la console.

Le module http est de bas niveau, il faut donc, pour faciliter la création de notre application utiliser un framework, une liste non exhaustive de quelques uns :

koa.js

express.js  ( c’est celui que nous utiliserons )

hapi.js

Loopback

Une dernière chose, on va initialiser npm pour gérer les dépendances dans la prochaine partie :

$ npm init -y

La commande ci-dessus va permettre de créer un fichier package.json à la racine de votre projet afin de pouvoir lister ces dépendances, tandis que le “flag” -y pas permettre d’éviter toutes les questions d’usage lors de la création du projet.

Dans la prochaine partie : Express, le routing et l’upload des images .