archi api

Etape 1 :Installation et démarrage

  • Installer NodeJS https://nodejs.org/en/download/
  • Réaliser un fichier bonjour.js
console.log("Bonjour");
  • Tester le fichier.
node "dossier"/bonjour.js
  • Installer le module express grâce à npm.
npm install express --save

Création du serveur

  • Dans un fichier index.js
//L'application requiert l'utilisation du module Express.
var express = require('express'); 
 
var hostname = 'localhost'; 
var port = 8080;

// Nous créons un objet de type Express.  
var app = express(); 
 
// Démarrer le serveur 
app.listen(port, hostname, function(){
	console.log("Mon serveur fonctionne sur http://"+ hostname +":"+port+"\n"); 
});
  • Lancer le serveur, puis le tester, un message “cannot GET /” s’affiche.

Implémentation d’une URI /bonjour en GET

  • Le serveur devra renvoyer bonjour

Exemple de code serveur

var express = require('express'); 
var hostname = 'localhost'; 
var port = 8080; 
var app = express(); 

//Afin de faciliter le routage (les URL que nous souhaitons prendre en charge dans notre API), nous créons un objet Router.
//C'est à partir de cet objet myRouter, que nous allons implémenter les méthodes. 
var myRouter = express.Router(); 

myRouter.route('/waza')
// GET
.get(function(req,res){ 
	  res.json({message : "Youhou", methode : req.method});
})
// Nous demandons à l'application d'utiliser notre routeur
app.use(myRouter);  

app.listen(port, hostname, function(){
	console.log("Mon serveur fonctionne sur http://"+ hostname +":"+port); 
});

Etape 2 : Récupération d’information via l’URL

  • Réaliser une page formulaire.html qui permette de saisir un login et un mot de passe.
  • Récupérer les informations sur NodeJS grâce à une page index.js et renvoyer les 2 valeurs au navigateur.

Exemple de code client

  $( document ).ready(function() {

  $('#btn-new-liste').click(function(){ 
    var idx=$('#idx').val();
      $.ajax({ 
      type: "GET",
      url: "http://localhost/serveur/gateau/"+idx,
      success: function(data){  
        $("#result").html(data);
      }
    });
  });

 });

Exemple de code serveur

myRouter.route('/gateau/:id')
.get(function(req,res){ 
	  res.json({message : "gateau n°" + req.params.id});
})

Etape 3 : Récupération d’information via des paramètres dans l’URL

  • Installer le module mysql pour pouvoir accéder à une base de données
  • Réaliser un formulaire de création d’un client.
  • Envoyer les informations à NodeJS en JSON avec la méthode POST.
  • Récupérer les informations sur le serveur NodeJS
  • Réaliser une insertion du client grâce à une requête SQL sur le serveur NodeJS.

Exemple de code client

$('#btn-valide').click(function(){ 
var id=$('#id').val();
var nom=$('#nom').val();
$.ajax({ 
      type: "POST",
      contentType: 'application/json; charset=utf-8',
      url: "http://localhost/serveur/gateau?id="+id+"&nom="+nom,
     success: function(data){
          //gateau modifié
         alert("gateau enregistré");
      }
 });
});

Exemple de code serveur

myRouter.route('/gateau')
.post(function(req,res){ 
 id= req.query.id;
 nom= req.query.nom;
 connection.connect();
 connection.query('insert into gateau values('+id+',"'+nom+'")', function (error, results, fields) {
 if (error) throw error; 
 }); 
 connection.end();
 res.json({
 message : "Gateau ajouté"}); 
})

Etape 4 : Envoie d’information en JSON depuis le serveur

  • Permettre lors de l’appel de l’url clients d’afficher tous les clients. Le serveur NodeJS renverra un tableau en JSON.

Exemple de code client

$('#btn-valide').click(function(){ 
$.ajax({ 
      type: "GET",
      contentType: 'application/json; charset=utf-8',
      url: "http://localhost/serveur/gateaux,
     success: function(data){
          alert(data);
      }
 });
});

Exemple de code serveur

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '',
  database : 'patisserie'
});
myRouter.route('/gateaux') 
.get(function(req,res,next){ 
 connection.connect();
 connection.query('SELECT * from gateau', function (error, results, fields) {
 if (error) throw error;
 res.json({
 message : results}); 
 });  
 connection.end(); })