12. Уроки Node.js . Документация Http Модуля.

nodejs-2560x1440-950x534
В дальнейшем мы будем часто обращаться  к модулю http, поэтому сейчас небольшая экскурсия по его документации, что в ней есть и где это искать.
Сейчас модуль http совмещает в себе два функционала. Первый – это функционал сервера. http.createServer создает новый объект класса  Server. Если передан обработчик, то он ставится на событие request. Второй функционал – это createClient.
Этот метод устарел, есть немножко другой: http.request. Общий смысл такой, что он предназначен для создания httpзапросов. При помощи этого метода Node.js может обратиться к другому сайту или серверу. Сам по себе класс http.Server используется мало. Создается объект, вешается обработчик на событие request. Запрос пришел, и при помощи listen сервером назначается определенный port, host.

Далее при получении запроса происходит событие request, и контроль приходит к функции обработчику. Она получает два аргумента. Первый requestобъект запроса, входящие данные. Второй – Response – объект ответа.

Давайте начнем с объекта запроса. Сейчас я посмотрю, где он в документации. Тут есть некоторые трудные для понимания места, возможно, в будущем, при переписывании модуля, они будут устранены. ClientRequestэто вовсе не объект запроса, о котором сейчас идет речь. Это объект запроса, если мы используем httplient, то есть, если мы при помощи Node.js генерируем этот запрос. А если мы этот функционал не используем, то ClientRequest вообще не причем. Нас интересует IncomingMessage. Именно он – это первый параметр функции обработчика запроса, он получает url, method, headers и некоторые другие свойства.
Хотел бы обратить ваше внимание на то, что здесь находятся не все свойства объекта запроса, потому что IncomingMessage  наследует другому классу, который представляет собой так называемый поток. Эти потоки мы в ближайшем будущем обсудим. Поэтому и событие event тоже не единственное. Есть еще, мы перейдем к ним позже.

Обычный цикл работы сервера состоит из того, что мы узнаем, что именно к нам пришло. А дальше отвечаем, осуществляя запись в объект  ServerResponseвторой параметр обработчика запроса request. Если есть желание, мы можем поставить свои заголовки. Это делается либо вызовом writeHead, который отправляет их в ответ тут же, либо неявным образом. Неявный означает, в данном случае, что тут же они отправлены не будут, а подождут первой записи. Во многих случаях никакие особые заголовки не требуются. Можно сразу написать ответ, если это веб-страница, то ответ можно записать вызовом response.end и в первом параметре указать текст страницы. Также для записи в ответ есть метод  response.write. В отличие от response.end он не закрывает соединение. Поэтому response.write используют в тех случаях, когда мы хотим много-много раз что-то писать в ответ, например, потому что появляются новые данные. В этом случае, для того, чтобы окончить ответ, используется end. Соединение будет висеть до того, пока end не будет вызван или пока его клиент не закроет, либо произойдет какая-то ошибка.

У объекта ответа есть и другие свойства события, которые здесь не упомянуты, потому что эта документация посвящена   ServerResponse. А он является наследником другого класса, который в дальнейшем мы тоже изучим. Но на текущий момент мы уже знаем достаточно, чтобы получить запрос и отослать нормальный ответ в браузер.
7ae59af52cfc42fa9d851753e4509bd0

Материалы урока взяты из следующего скринкаста.

We are looking forward to meeting you on our website soshace.com

About the author

Stay Informed

It's important to keep up
with industry - subscribe!

Stay Informed

Looks good!
Please enter the correct name.
Please enter the correct email.
Looks good!

Related articles

Уроки Express.js . Логгер, Конфигурация, Шаблонизация с EJS. Часть 2.

Favicon – это все connect Middleware, он смотрит, если url имеет вид favicon.ico, то он читает favicon и ...

3. Уроки Express.js. Шаблонизация с EJS: Layout, Block, Partials

В реальной жизни у нас обычно больше, чем один шаблон. Более того, если уж так ...

24.11.2016

Уроки Express.js. Основы и Middleware. Часть 2.

Всем привет! Давайте продолжим наш урок об основах Express и Middleware. Итог (добавим в ...

No comments yet

Sign in

Forgot password?

Or use a social network account

 

By Signing In \ Signing Up, you agree to our privacy policy

Password recovery

You can also try to

Or use a social network account

 

By Signing In \ Signing Up, you agree to our privacy policy