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访问ActiveX对象,以操作Access数据库为例。
Dec 15 NodeJs
跟我学Nodejs(三)--- Node.js模块
May 25 NodeJs
在NodeJS中启用ECMAScript 6小结(windos以及Linux)
Jul 15 NodeJs
详谈nodejs异步编程
Dec 04 NodeJs
nodejs实现HTTPS发起POST请求
Apr 23 NodeJs
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
Aug 21 NodeJs
Nodejs中session的简单使用及通过session实现身份验证的方法
Feb 04 NodeJs
nodejs中模块定义实例详解
Mar 18 NodeJs
nodejs个人博客开发第五步 分配数据
Apr 12 NodeJs
nodejs中sleep功能实现暂停几秒的方法
Jul 12 NodeJs
详解Nodejs mongoose
Jun 10 NodeJs
基于nodejs的雪碧图制作工具的示例代码
Nov 05 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
Ajax PHP分页演示
2007/01/02 PHP
PHP实现搜索相似图片
2015/09/22 PHP
浅析php如何实现App常用的秒发功能
2016/08/03 PHP
json 入门基础教程 推荐
2009/10/31 Javascript
JS 文件大小判断的实现代码
2010/04/07 Javascript
picChange 图片切换特效的函数代码
2010/05/06 Javascript
jquery 多行滚动代码(附详细解释)
2010/06/17 Javascript
js全屏显示显示代码的三种方法
2013/11/11 Javascript
JavaScript中的跨浏览器事件操作的基本方法整理
2016/05/20 Javascript
微信小程序动态的加载数据实例代码
2017/04/14 Javascript
bootstrap table表格插件使用详解
2017/05/08 Javascript
Easy UI动态树点击文字实现展开关闭功能
2017/09/30 Javascript
echarts同一页面中四个图表切换的js数据交互方法示例
2018/07/03 Javascript
Nuxt.js 数据双向绑定的实现
2019/02/17 Javascript
使用JQuery自动完成插件Auto Complete详解
2019/06/18 jQuery
Layer.js实现表格溢出内容省略号显示,悬停显示全部的方法
2019/09/16 Javascript
微信小程序返回箭头跳转到指定页面实例解析
2019/10/08 Javascript
微信小程序学习总结(二)样式、属性、模板操作分析
2020/06/04 Javascript
Vue中用JSON实现刷新界面不影响倒计时
2020/10/26 Javascript
初步讲解Python中的元组概念
2015/05/21 Python
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
2016/06/29 Python
Python实现的爬取网易动态评论操作示例
2018/06/06 Python
python实现从ftp服务器下载文件
2020/03/03 Python
基于python实现获取网页图片过程解析
2020/05/11 Python
Python加速程序运行的方法
2020/07/29 Python
CSS3 实现雷达扫描图的示例代码
2020/09/21 HTML / CSS
HTML5中语义化 b 和 i 标签
2008/10/17 HTML / CSS
Schecker荷兰:狗狗用品和配件
2019/06/06 全球购物
罗技英国官方网站:Logitech UK
2020/11/03 全球购物
介绍一下grep命令的使用
2012/06/28 面试题
建筑项目策划书
2014/01/13 职场文书
九年级政治教学反思
2014/02/06 职场文书
空气的环保标语
2014/06/12 职场文书
医院合作协议书
2014/08/19 职场文书
2015年驾驶员工作总结
2015/04/29 职场文书
剑指Offer之Java算法习题精讲二叉树的构造和遍历
2022/03/21 Java/Android