server.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. /**
  2. * ATTENTION le fichier sandboxApp.js est assez complexe.
  3. * Il sert à initialiser l'appli permettant d'avoir l'éditeur HTML&JavaScript en ligne
  4. */
  5. var app = require('./sandboxApp');
  6. /*-------------------------------------------------------*
  7. | Déclaration de gestionnaires pour les exemples AJAX
  8. *-------------------------------------------------------*
  9. |
  10. */
  11. // 1er exemple: envoie du HTML généré dynamiquement.
  12. app.get('/ajax-example', function(req, res) {
  13. var date = new Date();
  14. var exampleHtml = '<p>Un peu de HTML retourné par le serveur.</p>' +
  15. '<p><em>Généré le: ' + date.toString() + '</em></p>';
  16. res.send(exampleHtml);
  17. });
  18. // 2ème exemple : envoi formulaire par méthode GET
  19. app.get('/ajax-form-get', function(req, res) {
  20. var name = req.query.name;
  21. var birthdate = req.query.birthdate;
  22. var exampleHtml = '<p>Salutations, <em>' + name +
  23. '</em>, né(e) le <em>' + birthdate + '</em>.</p>';
  24. res.send(exampleHtml);
  25. });
  26. /**
  27. * Création d'un tableau vide où on va stocker les utilisateurs
  28. */
  29. var userList = [];
  30. var userId = 1;
  31. /**
  32. * Création d'un utilisateur : on le stocke dans le tableau userList
  33. * ATTENTION ! Dans la "vraie vie", on utiliserait une base de données !
  34. */
  35. function createNewUser(user) {
  36. // On vérifie que les données de l'utilisateur sont renseignées
  37. // Si non, on renvoie false
  38. if(! user || ! user.username || ! user.email || ! user.password) {
  39. return false;
  40. }
  41. // L'étape de vérification a réussi, on insère l'utilisateur dans le tableau
  42. // On crée un faux "id" pour simuler une insertion SQL. En SQL les "id" sont
  43. // incrémentés à chaque insertion. On simule cela en incrémentant un compteur
  44. // "userId" à chaque insertion
  45. userList.push({
  46. id: userId++,
  47. username: user.username,
  48. email: user.email,
  49. password: user.password
  50. });
  51. return true;
  52. }
  53. /**
  54. * Ce code va gérer la requête POST vers l'URL /register de notre micro-serveur
  55. */
  56. app.post('/register', function(req, res) {
  57. // Les données envoyées par le client (navigateur) sont dans la propriété "body"
  58. // de l'objet req (pour request)
  59. var user = req.body;
  60. // createNewUser() va nous renvoyer true ou false
  61. var success = createNewUser(user);
  62. if(success) {
  63. // Envoyer un message sur la console du serveur
  64. console.log('Utilisateur enregistré: ', user, '\nListe des utilisateurs', userList);
  65. res.json({ user: user });
  66. }
  67. else {
  68. res.status(400).json({ error: 'Champs manquants dans la requête' });
  69. }
  70. });
  71. app.get('/username-check', function(req, res) {
  72. var username = req.query.username;
  73. for(u = 0 ; u < userList.length ; u++) {
  74. if(username === userList[u].username) {
  75. return res.json({ success: false });
  76. }
  77. }
  78. res.json({ success: true });
  79. });
  80. console.log('Le serveur écoute sur le port 3000. Laissez cette console ouverte !')
  81. app.listen(3000);