Gestion des données côté serveur

Faire une API avec son serveur.

Gérer des données côté serveur nécessite plusieurs actions bien distinctes :

  1. organisation des requêtes possible sous la forme d'une API
  2. manipulation d'une donnée : CRUD
  3. transfert et stockage : sérialisation

API

L'échange de données entre le client et le serveur se fait grâce à une API qui détermine les routes utilisables (en utilisant des routes paramétrables). Il existe plusieurs moyens d'organiser une API :

CRUD

Cet acronyme signifie :

Et rappelle le cycle de vie d'une donnée. Il faut que l'API puisse permettre au client d'effectuer ces actions CRUD pour chacune des données (si possible). On a coutume d'expliciter ces requêtes en utilisant des méthodes HTTP différentes :

On ne peut via un navigateur qu'utiliser des méthode get. Pour utiliser les autres méthodes, on peut utiliser fetch en javascript en spécifiant la méthode à utiliser

Pour tester les méthodes lorsque l'on est entrain de développer, on a coutume d'utiliser une application tierce, comme https://www.postman.com/ par exemple (on peut l'utiliser de façon gratuite sans avoir besoin de s'inscrire)

Souvent, on n'a besoin que des méthodes GET (pour lire) et POST (pour écrire et mettre à jour) la donnée. Par exemple, supposons que l'on veuille stocker une unique donnée. On veut pouvoir :

On peut utiliser le code express suivant :

const express = require('express')
const app = express()

const hostname = '127.0.0.1';
const port = 3000;

donnée = 42

app.get('/', (req, res) => {
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/html; charset=utf-8');

    res.end(donnée.toString());

})


app.post('/', (req, res) => {

    donnée = req.query.valeur
    res.redirect('/')

})


app.listen(port, hostname);
console.log(`Server running at http://${hostname}:${port}/`);

Plusieurs remarques :

Utilisez https://www.postman.com/ pour tester le serveur précédant.

TBD montrer comment ça marche (screenshot)

JSON pour sérialiser ses données

La sérialisation/désérialisation est l'opération consistant à transformer une donnée en un format facilement transportable/stockable et à procéder à l'opération inverse pour retrouver la donnée originelle.

Cette opération est cruciale dans toute gestion des données. Pour le web :

  • les données : des dictionnaires javascript
  • le format facilement transportable : le texte (utf8).

La façon de convertir les dictionnaires en texte et réciproquement est régie par le json

Le json est tellement bien fait qu'il est utilisé partout ! Il est en effet très facile à lire, à modifier avec un simple éditeur de texte, et à transférer avec une simple requête http.

TBD exemple avec dictionnaire -> fichier json -> dictionaire