Вход/Регистрация
JavaScript. Подробное руководство, 6-е издание
вернуться

Флэнаган Дэвид

Шрифт:

else { // Иначе, если файл успешно прочитан.

response.writeHead(200, // Установить код состояния и тип MIME

{"Content-Type": type});

response.write(content); // Отправить содержимое файла

response.end; // И завершить отправку

}

}):

}

});

12.2.2. Пример использования Node: модуль утилит клиента HTTP

В примере 12.3 определяется несколько вспомогательных клиентских функций, использующих модуль «http», позволяющих выполнять GET- и POST-запросы протокола HTTP. Пример оформлен как модуль «httputils», который можно использовать в собственных программах, например:

var httputils = require("./httputils"); // Отметьте отсутствие расш. ".js"

httputils.get(иrl. function(status. headers, body) { console.log(body); });

При выполнении программного кода модуля функция

require
не использует обычную функцию
eval.
Модули выполняются в специальном окружении, чтобы они не могли определять глобальные переменные или как-то иначе изменять глобальное пространство имен. Это специализированное окружение для выполнения модулей всегда включает глобальный объект с именем exports. Модули экспортируют свои API, определяя свойства этого объекта. [27]

27

Интерпретатор Node реализует протокол CommonJS работы с модулями, описание которого можно найти по адресу http://www.commonjs.org/specs/modules/LO/.

Пример 12.3. Модуль «httputils» для интерпретатора Node

//

// Модуль "httputils" для интерпретатора Node.

//

// Выполняет асинхронный HTTP GET-запрос для указанного URL и передает

// код состояния HTTP, заголовки и тело ответа указанной функции обратного

// вызова. Обратите внимание, как этот метод экспортируется через объект exports.

exports.get = function(url, callback) {

// Разобрать URL и получить необходимые фрагменты

url = require('url‘).parse(url);

var hostname = url.hostname, port = url.port || 80;

var path = url.pathname, query = url.query;

if (query) path += "?” + query;

// Выполняем простой GET-запрос

var client = require("http").createClient(port, hostname);

var request = client.request("GET”, path, {

"Host": hostname // Заголовки запроса

});

request.end;

// Функция обработки ответа после начала его получения

request.on("response", function(response) {

// Указать кодировку, чтобы тело возвращалось как строка, а не байты

response.setEncoding("utf8");

// Для сохранения тела ответа по мере получения

var body =
response.on("data", function(chunk) { body += chunk; });

// По окончании тела ответа вызвать функцию обратного вызова

response.on("end", function { if (callback)

callback(response.statusCode, response.headers, body);

));

});

};

// Простой HTTP POST-запрос с данными в теле запроса

  • Читать дальше
  • 1
  • ...
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: