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文件操作模块FS(File System)常用函数简明总结
Jun 05 NodeJs
nodejs实现黑名单中间件设计
Jun 17 NodeJs
Nodejs如何复制文件
Mar 09 NodeJs
搭建简单的nodejs http服务器详解
Mar 09 NodeJs
深入nodejs中流(stream)的理解
Mar 27 NodeJs
nodejs中art-template模板语法的引入及冲突解决方案
Nov 07 NodeJs
nodejs实现大文件(在线视频)的读取
Oct 16 NodeJs
nodejs+mongodb+vue前后台配置ueditor的示例代码
Jan 02 NodeJs
nodejs中Express与Koa2对比分析
Feb 06 NodeJs
NVM安装nodejs的方法实用步骤
Jan 16 NodeJs
nodejs搭建本地服务器并访问文件操作示例
May 11 NodeJs
Nodejs文件上传、监听上传进度的代码
Mar 27 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中与数组相关的函数
2007/03/22 PHP
php下实现在指定目录搜索指定类型文件的函数
2008/10/03 PHP
PHP GD 图像处理组件的常用函数总结
2010/04/28 PHP
记录mysql性能查询过程的使用方法
2013/05/02 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
在JavaScript中通过URL传递汉字的方法
2007/04/09 Javascript
$.get获取一个文件的内容示例代码
2013/09/11 Javascript
jQuery修改li下的样式以及li下的img的src的值的方法
2014/11/02 Javascript
JavaScript声明变量名的语法规则
2015/07/10 Javascript
JavaScript电子时钟倒计时
2016/01/09 Javascript
Vue 2.0 服务端渲染入门介绍
2017/03/29 Javascript
原生js实现密码输入框值的显示隐藏
2017/07/17 Javascript
vue里input根据value改变背景色的实例
2018/09/29 Javascript
微信小程序保存多张图片的实现方法
2019/03/05 Javascript
js实现提交前对列表数据的增删改查
2020/01/16 Javascript
[09:13]2014DOTA2国际邀请赛 中国区预选赛coser表演
2014/05/23 DOTA
[01:55]2014DOTA2国际邀请赛快报:国土生病 紧急去医院治疗
2014/07/10 DOTA
[01:38]完美世界高校联赛决赛花絮
2018/12/02 DOTA
Python实现获取域名所用服务器的真实IP
2015/10/25 Python
python字典DICT类型合并详解
2017/08/17 Python
Python重新加载模块的实现方法
2018/10/16 Python
小白教你PyCharm从下载到安装再到科学使用PyCharm2020最新激活码
2020/09/25 Python
经济实惠的豪华背包和行李袋:Packs Project
2018/10/17 全球购物
Kate Spade澳大利亚官方网站:美国设计师手袋品牌
2019/09/10 全球购物
怎样声明子类
2013/07/02 面试题
J2EE模式面试题
2016/10/11 面试题
数控加工专业毕业生自荐信
2013/09/27 职场文书
运动会通讯稿400字
2014/01/28 职场文书
小学生暑假感言
2014/02/06 职场文书
经典婚礼主持开场白
2014/03/13 职场文书
2014年老干部工作总结
2014/11/21 职场文书
2016年教师党员公开承诺书
2016/03/24 职场文书
创业计划书之少年玩具店
2019/09/05 职场文书
Python 发送SMTP邮件的简单教程
2021/06/24 Python
python之django路由和视图案例教程
2021/07/26 Python
sql server删除前1000行数据的方法实例
2021/08/30 SQL Server