Багато вже не сприймають node.js без цього модуля. Він здорово спрощує рутинні операції по створенню сервера, роботі з запитами і всякої маршрутизацією.
Найпростіший код для створення сервера, що віддає «hello» на запит кореня:
Всі функції бібліотеки повертають назад об'єкт app, тому їх можна цепочіть:
Щоб відповісти на POST-запит, просто використовуйте app.post ( '/', function (req, res) <>); Для відповіді на запит конкретного шляху використовуйте
змінні шляху
Запит потрапляє в змінну req. Всі змінні доступні як «req.params.імя_переменной», наприклад в наведеному прикладі можна отримати значення req.params.file, req.params.folder. Звичайно, це потрібно використовувати з розумом - припустимо, спочатку поставити в чергу обробки (розмістити вище) функцію, що реагує на «/», потім «/index.htm», і вже потім «/: file», оскільки весь перелік оброблювачів обходяться послідовно , і обхід припиняється при досягненні відповідного обробника.
параметри клієнта
Доступні деякі параметри начебто IP користувача (req.ip), URL сторінки (req.path), протокол (req.protocol).
дані запиту
При запиті шляху начебто /index.htm?a=5long_variable_name=7 значення змінних потрапляють в req.query.a і req.query.long_variable_name відповідно.
відповідь сервера
Це поле діяльності змінної res. res.send або res.end відправляють відповідь сервера - код відповіді і текст сторінки. Будь-яке з полів може бути пропущено, припустимо res.send ( 'hello'); відправить сторінку з текстом hello і код 200, а res.send (404); відправить код помилки 404. Також можна відправляти масиви і об'єкти, тоді send перетворює їх в json-рядки.
передача файлів
Очевидно, так можна відправляти і файли в бінарному вигляді, тільки спочатку треба їх завантажити за допомогою бібліотеки fs. Щоб повідомити клієнту тип переданого файлу, служить функція res.type (), наприклад res.type ( 'html') для html-коду (за замовчуванням), або res.type ( 'png') для PNG-картинки (використовуйте PNG в своїх проектах!)
Насправді, куди простіше відправляти файл командою res.attachment ( 'шлях_до_файлу') або її розширеним варіантом res.sendfile ( 'шлях_до_файлу', [options], function (err) <>). Але це для «нескачіваемих» файлів - елементів верстки, js-коду або css-файлів, картинок.
Передача завантаження
Дуже легко можна здійснити передачу «викачуваного» файлу, тобто такого який викличе появу у користувача віконця «Завантажити файл».
Ось ми і зробили файлохостінг з обмеженою кількістю завантажених файлів
Завантаження файлів
Щоб дати користувачеві можливість завантажувати до вас файли, виконайте наступні дії. Віддайте йому методом GET сторінку з кодом
У обробнику POST цієї сторінки ви отримаєте змінну req.files.downloaded_file. Якщо Ви завантажили кілька файлів, то це масив об'єктів (з параметром length = кількість файлів), якщо був завантажений один файл - це об'єкт. У кожному об'єкті буде записаний шлях до нього. До речі, папку для збереження тимчасових файлів можна задати на самому початку коду, при створенні об'єкта app - передайте методу bodyParser відповідний параметр:
Модулі express.js
Ми обійшли увагою рядок app.use (express.bodyParser ()) при ініціалізації модуля, а вона між іншим дуже важлива. Функція use - це інтерфейс підключення додаткових модулів до express.js. bodyParser - це мета-модуль, який об'єднує модулі json, urlencoded і multipart. Всі їх можна підключати окремо, і передавати їм якісь параметри. Існує ще кілька модулів, найкорисніші - logger і compress, які включає gzip-стиснення сторінок.