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 模块开发及发布详解分享
Mar 07 NodeJs
NodeJS使用jQuery选择器操作DOM
Feb 13 NodeJs
浅谈NodeJS中require路径问题
May 07 NodeJs
nodejs 的 session 简单使用
Jun 06 NodeJs
详解nodeJS中读写文件方法的区别
Mar 06 NodeJs
Nodejs实现多房间简易聊天室功能
Jun 20 NodeJs
nodejs多版本管理总结
Apr 03 NodeJs
修改Nodejs内置的npm默认配置路径方法
May 13 NodeJs
对mac下nodejs 更新到最新版本的最新方法(推荐)
May 17 NodeJs
NodeJs操作MongoDB教程之分页功能以及常见问题
Apr 09 NodeJs
Nodejs中使用puppeteer控制浏览器中视频播放功能
Aug 26 NodeJs
Nodejs封装类似express框架的路由实例详解
Jan 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
基于php缓存的详解
2013/05/15 PHP
php文件上传的简单实例
2013/10/19 PHP
浅谈PHP的反射机制
2016/12/15 PHP
JS 有名函数表达式全面解析
2010/03/19 Javascript
深入理解JavaScript系列(26):设计模式之构造函数模式详解
2015/03/03 Javascript
javascript格式化指定日期对象的方法
2015/04/21 Javascript
AngularJS 工作原理详解
2016/08/18 Javascript
详细讲解JavaScript中的this绑定
2016/10/10 Javascript
JS实现页面跳转参数不丢失的方法
2016/11/28 Javascript
浅谈angularjs $http提交数据探索
2017/01/20 Javascript
JavaScript简单计算人的年龄示例
2017/04/15 Javascript
Express + Node.js实现登录拦截器的实例代码
2017/07/01 Javascript
浅谈JavaScript中的属性:如何遍历属性
2017/09/14 Javascript
解决JQuery全选/反选第二次失效的问题
2017/10/11 jQuery
vue.js中$set与数组更新方法
2018/03/08 Javascript
Layui实现数据表格中鼠标悬浮图片放大效果,离开时恢复原图的方法
2019/09/11 Javascript
js判断密码强度的方法
2020/03/18 Javascript
pygame学习笔记(6):完成一个简单的游戏
2015/04/15 Python
python线程定时器Timer实现原理解析
2019/11/30 Python
Python手绘可视化工具cutecharts使用实例
2019/12/05 Python
Python Flask上下文管理机制实例解析
2020/03/16 Python
selenium自动化测试入门实战
2020/12/21 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
2021/02/02 Python
HTML5中视频音频的使用详解
2017/07/07 HTML / CSS
Armor Lux法国官方网站:水手服装、成衣和内衣
2020/05/26 全球购物
do you have any Best Practice for testing
2016/06/04 面试题
我的梦想演讲稿1000字
2014/08/21 职场文书
判缓刑人员个人思想汇报
2014/10/10 职场文书
从贫穷到富有,是知识技能和学习力的差别
2019/08/20 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书
用Python制作灯光秀短视频的思路详解
2021/04/13 Python
python 常用的异步框架汇总整理
2021/06/18 Python
Java实战之课程信息管理系统的实现
2022/04/01 Java/Android
Windows Server 2012配置DNS服务器的方法
2022/04/29 Servers
Mysql中的触发器定义及语法介绍
2022/06/25 MySQL
win10输入法不见了只能打出字母怎么解决?
2022/08/05 数码科技