server.js 2.7 KB

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