NodeJS创建最简单的HTTP服务器


Posted in NodeJs onMay 15, 2017

☆ 引子

var http = require('http');

http.createServer(function(request, response){
  response.writeHead(200, { 'Content-Type': 'text-plain' });
  response.end('Hello World\n');
}).listen(8124);

对这个http这个最顶层的对象有个.createServer服务器的方法。
创建了一个服务器,跟服务器相关的就两个事件。
请求事件,request事件,request对象。
响应事件,response事件,responose对象。
所以,这个function函数里头,第一个参数是request对象,第二个参数是response对象。

☆ HTTP请求

1. http请求事件——request事件

HTTP的请求信息,由http.request事件发送。
事件就是对象,对象就是有属性和方法。

这个request事件发送的请求信息是什么呢?
是这个对象——http.ServerRequest。
对象就是有属性和方法。

2. http.ServerRequest的属性

request对象的属性是:

NodeJS创建最简单的HTTP服务器

这个http.ServerRequest对象描述的是请求信息,这个请求信息主要是由两个部分组成的:
1. 请求头(Request head)
2. 请求体(Request body)
请求头里头的数据长度比较短,解析完成后,能够立即读取。
请求体可能相对时间就比较长,需要一定时间的传输。

3. http.ServerRequest相关的事件

跟这个请求信息http.ServerRequest发送的时候相关的事件有四个,
看下面这个表:

NodeJS创建最简单的HTTP服务器

HTTP响应

1. http响应事件——response事件

服务器接收了http.ServerRequest—— 客户端发给服务器的请求数据。它处理了一下数据,也需要有个响应,发给客户端。
这个响应事件就是responce,在服务器中是第二个参数。
跟这个response相关的有几个方法:

NodeJS创建最简单的HTTP服务器

2. response对象的属性

response事件发的这个东西就是http.ClientResponse对象。
这个对象描述的就是响应信息,
这个响应信息也是由两个部分组成的
1. 响应头(Response head)
2. 响应体(Response body)

这个对象的属性就是下面这个表描述的:

NodeJS创建最简单的HTTP服务器

3. http.ClientResponse相关的事件

跟这个响应信息相关的也是这几个事件

NodeJS创建最简单的HTTP服务器

☆ 引子代码讲解

//引入内置模块http模块
var http = require('http');

//2
http.createServer(function(request, response){
  response.writeHead(200, { 'Content-Type': 'text-plain' });
  response.end('Hello World\n');
}).listen(8124);

在注释标号为2的代码处,意思是http当中有个createServer的方法,里头的功能函数的参数就是两个,第一个就是request事件,第二个就是response事件。
在这个函数体内部呢
response.writeHead就是一个写响应头的方法,
1. 200是HTTP状态码,表示成功处理了此次请求,
2. {'Content-Type':'text-plain'}这个是个MIME标准的格式描述。
告诉浏览器,返回的内容类型是个啥东西,text-plain就是MIME类型。
3. response.end()表示的就是响应事件传输数据结束。因为请求没有发送请求体数据,所以没有触发data事件。

http.createServer(function(request,response){}).listen(8124);

这就是最简单的一个服务器。监听的是服务器上的8124端口。

第一步: 把引子中的代码保存成.js文件,然后用Node运行这个js文件。

如图:

NodeJS创建最简单的HTTP服务器

第二步: 浏览器访问服务器端口(本地8124端口),就会显示服务器程序返回的响应信息。

NodeJS创建最简单的HTTP服务器

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
使用nodejs中httpProxy代理时候出现404异常的解决方法
Aug 15 NodeJs
nodejs实例解析(输出hello world)
Jan 03 NodeJs
简单好用的nodejs 爬虫框架分享
Mar 26 NodeJs
NodeJS链接MySql数据库的操作方法
Jun 27 NodeJs
nodejs实现大文件(在线视频)的读取
Oct 16 NodeJs
NodeJs form-data格式传输文件的方法
Dec 13 NodeJs
Nodejs中crypto模块的安全知识讲解
Jan 03 NodeJs
nodeJS模块简单用法示例
Apr 21 NodeJs
详解redis在nodejs中的应用
May 02 NodeJs
解决Nodejs全局安装模块后找不到命令的问题
May 15 NodeJs
Nodejs中获取当前函数被调用的行数及文件名详解
Dec 12 NodeJs
5分钟教你用nodeJS手写一个mock数据服务器的方法
Sep 10 NodeJs
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
May 13 #NodeJs
配置nodejs环境的方法
May 13 #NodeJs
nodejs multer实现文件上传与下载
May 10 #NodeJs
nodejs处理图片的中间件node-images详解
May 08 #NodeJs
使用nodejs爬取前程无忧前端技能排行
May 06 #NodeJs
win系统下nodejs环境安装配置
May 04 #NodeJs
Nodejs--post的公式详解
Apr 29 #NodeJs
You might like
Linux环境下搭建php开发环境的操作步骤
2013/06/17 PHP
使用PHP会话(Session)实现用户登陆功能
2013/06/29 PHP
PHP循环结构实例讲解
2014/02/10 PHP
Yii2分页的使用及其扩展方法详解
2016/05/23 PHP
PHP批量获取网页中所有固定种子链接的方法
2016/11/18 PHP
PHP实现图片的等比缩放和Logo水印功能示例
2017/05/04 PHP
laravel解决迁移文件一次删除创建字段报错的问题
2019/10/24 PHP
javascript基础知识大集锦(二) 推荐收藏
2011/01/13 Javascript
jquery ajax修改全局变量示例代码
2013/11/08 Javascript
JavaScript数值转换的三种方式总结
2014/07/31 Javascript
javascript数组排序汇总
2015/07/07 Javascript
JavaScript的jQuery库中function的存在和参数问题
2015/08/13 Javascript
Require.js的基本用法详解
2017/07/03 Javascript
react-native 封装选择弹出框示例(试用ios&android)
2017/07/11 Javascript
angular2 NgModel模块的具体使用方法
2019/04/10 Javascript
原生js实现无缝轮播图效果
2021/01/28 Javascript
[40:03]RNG vs VG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python目录与文件名操作例子
2016/08/28 Python
python的pyecharts绘制各种图表详细(附代码)
2019/11/11 Python
python实现修改固定模式的字符串内容操作示例
2019/12/30 Python
使用python实现时间序列白噪声检验方式
2020/06/03 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
2021/02/04 Python
CSS3中的opacity属性使用教程
2015/08/19 HTML / CSS
浅谈基于Canvas的手绘风格图形库Rough.js
2018/03/19 HTML / CSS
如何设定的weblogic的热启动模式(开发模式)与产品发布模式
2012/09/08 面试题
施工班组长岗位职责
2014/01/05 职场文书
上班离岗检讨书
2014/01/27 职场文书
青年文明号创建承诺
2014/03/31 职场文书
社区清明节活动总结
2014/07/04 职场文书
地球物理学专业推荐信
2014/09/08 职场文书
《自己去吧》教学反思
2016/02/16 职场文书
六年级上册《闻官军收河南河北》的教学设计
2019/11/15 职场文书
MySQL root密码的重置方法
2021/04/21 MySQL
MySQL 时间类型的选择
2021/06/05 MySQL
用Python生成会跳舞的美女
2022/01/18 Python
Python+Selenium自动化环境搭建与操作基础详解
2022/03/13 Python