Найважливіший модуль

Багато вже не сприймають 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-стиснення сторінок.

Схожі статті