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与Mysql的交互示例代码
Aug 18 NodeJs
nodejs 实现模拟form表单上传文件
Jul 14 NodeJs
nodejs教程之制作一个简单的文章发布系统
Nov 21 NodeJs
Nodejs Express4.x开发框架随手笔记
Nov 23 NodeJs
nodejs获取微信小程序带参数二维码实现代码
Apr 12 NodeJs
NodeJs通过async/await处理异步的方法
Oct 09 NodeJs
nodejs中安装ghost出错的原因及解决方法
Oct 23 NodeJs
详解NodeJs开发微信公众号
May 25 NodeJs
nodejs高大上的部署方式(PM2)
Sep 11 NodeJs
nodejs require js文件入口,在package.json中指定默认入口main方法
Oct 10 NodeJs
nodejs异步编程基础之回调函数用法分析
Dec 26 NodeJs
Nodejs 识别图片类型的方法
Aug 15 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合并数组array_merge函数运算符加号与的区别
2008/10/31 PHP
PHP里的中文变量说明
2011/07/23 PHP
PHP之短标签开启设置
2013/06/17 PHP
在PHP语言中使用JSON和将json还原成数组的方法
2016/07/19 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
2019/10/24 PHP
jquery创建div 实现代码
2009/04/27 Javascript
js 获取(接收)地址栏参数值的方法
2013/04/01 Javascript
js打开新窗口方法整理
2014/02/17 Javascript
javascript日期操作详解(脚本之家整理)
2015/09/05 Javascript
Jquery实现纵向横向菜单
2016/01/24 Javascript
全面解析JS字符串和正则表达式中的match、replace、exec等函数
2016/07/01 Javascript
基于JS组件实现拖动滑块验证功能(代码分享)
2016/11/18 Javascript
js实现简单的获取验证码按钮效果
2017/03/03 Javascript
解决layui上传文件提示上传异常,实际文件已经上传成功的问题
2018/08/19 Javascript
微信小程序 textarea 层级过高问题简单解决方案
2019/10/14 Javascript
[01:20]DOTA2上海特级锦标赛现场采访:谁的ID最受青睐
2016/03/25 DOTA
浅谈Python实现贪心算法与活动安排问题
2017/12/19 Python
Python基于pycrypto实现的AES加密和解密算法示例
2018/04/10 Python
对python 自定义协议的方法详解
2019/02/13 Python
Python进度条的制作代码实例
2019/08/31 Python
基于Python实现剪切板实时监控方法解析
2019/09/11 Python
python脚本实现音频m4a格式转成MP3格式的实例代码
2019/10/09 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
2019/11/15 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
pycharm下配置pyqt5的教程(anaconda虚拟环境下+tensorflow)
2020/03/25 Python
生产主管岗位职责
2013/11/10 职场文书
材料采购员岗位职责
2013/12/17 职场文书
我的大学生活职业生涯规划
2014/01/02 职场文书
2014年教师节寄语
2014/04/03 职场文书
我的梦想演讲稿
2014/04/30 职场文书
2014年防汛工作总结
2014/12/08 职场文书
入党积极分子党小组意见
2015/06/02 职场文书
小型婚礼主持词
2015/06/30 职场文书
2015年村级财务管理制度
2015/08/04 职场文书
2016年大学生就业指导课心得体会
2015/10/09 职场文书
5种方法告诉你如何使JavaScript 代码库更干净
2021/09/15 Javascript