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框架Express的模板视图机制分析
Jul 19 NodeJs
Ubuntu中搭建Nodejs开发环境过程分享
Jun 01 NodeJs
Nodejs中的this详解
Mar 26 NodeJs
Nodejs高扩展性的模板引擎 functmpl简介
Feb 13 NodeJs
深入nodejs中流(stream)的理解
Mar 27 NodeJs
详解nodejs异步I/O和事件循环
Jun 07 NodeJs
深入浅析Nodejs的Http模块
Jun 20 NodeJs
docker中编译nodejs并使用nginx启动
Jun 23 NodeJs
NodeJS自定义模块写法(详解)
Jun 27 NodeJs
解决Nodejs全局安装模块后找不到命令的问题
May 15 NodeJs
nodejs初始化init的示例代码
Oct 10 NodeJs
分享五个Node.js开发的优秀实践 
Apr 07 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
解析PHP 使用curl提交json格式数据
2013/06/29 PHP
php动态生成函数示例
2014/03/21 PHP
简单介绍win7下搭建apache+php+mysql开发环境
2015/08/06 PHP
PHP 微信扫码支付源代码(推荐)
2016/11/03 PHP
php实现获取近几日、月时间示例
2019/07/06 PHP
YII2框架中查询生成器Query()的使用方法示例
2020/03/18 PHP
ASP.NET jQuery 实例10 动态修改hyperlink的URL值
2012/02/03 Javascript
Javascript中浮点数相乘的一个解决方法
2014/06/03 Javascript
nodejs命令行参数处理模块commander使用实例
2014/09/17 NodeJs
Jquery组件easyUi实现手风琴(折叠面板)示例
2016/08/23 Javascript
JavaScript使用链式方法封装jQuery中CSS()方法示例
2017/04/07 jQuery
移动端底部导航固定配合vue-router实现组件切换功能
2019/06/13 Javascript
python mysqldb连接数据库
2009/03/16 Python
python里使用正则表达式的组嵌套实例详解
2017/10/24 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
2018/06/19 Python
对Python 两大环境管理神器 pyenv 和 virtualenv详解
2018/12/31 Python
Python多进程写入同一文件的方法
2019/01/14 Python
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
2019/06/18 Python
使用Python中的reduce()函数求积的实例
2019/06/28 Python
jenkins配置python脚本定时任务过程图解
2019/10/29 Python
Python猴子补丁知识点总结
2020/01/05 Python
Python实现像awk一样分割字符串
2020/09/15 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
怎样让char类型的东西转换成int类型
2013/12/09 面试题
音乐教学随笔感言
2014/02/19 职场文书
企业出纳岗位职责
2014/03/12 职场文书
三好学生演讲稿范文
2014/04/26 职场文书
小学生个人先进事迹材料
2014/05/08 职场文书
销售人员求职信
2014/07/22 职场文书
规范化管理年活动总结
2014/08/29 职场文书
2014年文秘工作总结
2014/11/25 职场文书
拾金不昧表扬稿
2015/01/16 职场文书
承诺函范文
2015/01/21 职场文书
办公室主任岗位职责范本
2015/03/31 职场文书
CSS 一行代码实现头像与国旗的融合
2021/10/24 HTML / CSS
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
2022/04/14 Python