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 sublime text 3安装与配置
Jun 19 NodeJs
NodeJS学习笔记之Connect中间件模块(二)
Jan 27 NodeJs
nodejs URL模块操作URL相关方法介绍
Mar 03 NodeJs
Nodejs高扩展性的模板引擎 functmpl简介
Feb 13 NodeJs
async/await与promise(nodejs中的异步操作问题)
Mar 03 NodeJs
nodejs入门教程一:概念与用法简介
Apr 24 NodeJs
nodejs对express中next函数的一些理解
Sep 08 NodeJs
详解nodejs中express搭建权限管理系统
Sep 15 NodeJs
nodeJs爬虫的技术点总结
May 13 NodeJs
nodejs前端模板引擎swig入门详解
May 15 NodeJs
Nodejs libuv运行原理详解
Aug 21 NodeJs
nodejs制作小爬虫功能示例
Feb 24 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求最大子序列和的算法实现
2011/06/24 PHP
怎样使用php与jquery设置和读取cookies
2013/08/08 PHP
php中url函数介绍及使用示例
2014/02/13 PHP
jquery 插件 人性化的消息显示
2008/01/21 Javascript
jQuery 加上最后自己的验证
2009/11/04 Javascript
javascript trim函数在IE下不能用的解决方法
2014/09/12 Javascript
JavaScript测试工具之Karma-Jasmine的安装和使用详解
2015/12/03 Javascript
JavaScript的Backbone.js框架的一些使用建议整理
2016/02/14 Javascript
jQuery的ajax和遍历数组json实例代码
2016/08/01 Javascript
js实现千分符和保留几位小数的简单实例
2016/08/01 Javascript
微信小程序页面滑动屏幕加载数据效果
2020/11/16 Javascript
js使用generator函数同步执行ajax任务
2017/09/05 Javascript
Vue 滚动行为的具体使用方法
2017/09/13 Javascript
vue使用 better-scroll的参数和方法详解
2018/01/25 Javascript
bing Map 在vue项目中的使用详解
2018/04/09 Javascript
nodejs通过钉钉群机器人推送消息的实现代码
2019/05/05 NodeJs
vue接入腾讯防水墙代码
2019/05/07 Javascript
通过实例解析js简易模块加载器
2019/06/17 Javascript
JS扁平化输出数组的2种方法解析
2019/09/17 Javascript
vue操作dom元素的3种方法示例
2020/09/20 Javascript
vue 授权获取微信openId操作
2020/11/13 Javascript
python单向循环链表原理与实现方法示例
2019/12/03 Python
Python中的sys.stdout.write实现打印刷新功能
2020/02/21 Python
CSS3实现点击放大的动画实例代码
2017/02/27 HTML / CSS
在IE6系列等老式浏览器中使用HTML5的新标签实现方案
2012/12/25 HTML / CSS
HTML5注册页面示例代码
2014/03/27 HTML / CSS
利用HTML5中的Canvas绘制一张笑脸的教程
2015/05/07 HTML / CSS
澳大利亚设计师服装在线:MISHA
2019/10/07 全球购物
如何写一份好的自荐信
2014/01/02 职场文书
中西医专业毕业生职业规划书
2014/02/24 职场文书
优秀学生评语大全
2014/04/25 职场文书
教师党的群众路线学习心得体会
2014/11/04 职场文书
2015年财务试用期工作总结
2014/12/24 职场文书
婚宴主持词
2015/06/30 职场文书
《烈火英雄》观后感:致敬和平时代的英雄
2019/11/11 职场文书
Python通过loop.run_in_executor执行同步代码 同步变为异步
2022/04/11 Python