server.js 3.3 KB

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