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中启用ECMAScript 6小结(windos以及Linux)
Jul 15 NodeJs
NodeJS学习笔记之网络编程
Aug 03 NodeJs
Nodejs+express+html5 实现拖拽上传
Aug 08 NodeJs
实例详解Nodejs 保存 payload 发送过来的文件
Jan 14 NodeJs
nodejs服务搭建教程 nodejs访问本地站点文件
Apr 07 NodeJs
nodejs入门教程五:连接数据库的方法分析
Apr 24 NodeJs
nodejs动态创建二维码的方法
Aug 12 NodeJs
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
Oct 17 NodeJs
nodejs图片处理工具gm用法小结
Dec 12 NodeJs
Nodejs中使用puppeteer控制浏览器中视频播放功能
Aug 26 NodeJs
linux 下以二进制的方式安装 nodejs
Feb 12 NodeJs
Sublime Text3 配置 NodeJs 环境的方法
May 20 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
简单的过滤字符串中的HTML标记
2006/12/25 PHP
利用php+mysql来做一个功能强大的在线计算器
2010/10/12 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
2013/06/13 PHP
详解PHP执行定时任务的实现思路
2015/12/21 PHP
简单谈谈PHP中的trait
2017/02/25 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
javascript操作cookie_获取与修改代码
2009/05/21 Javascript
javascript cookies操作集合
2010/04/12 Javascript
JavaScript 字符串处理函数使用小结
2010/12/02 Javascript
让浏览器非阻塞加载javascript的几种方法小结
2011/04/25 Javascript
jquery获取tr中控件值并操作tr实现思路
2013/03/27 Javascript
目前流行的JavaScript库的介绍及对比
2013/09/29 Javascript
关于JavaScript命名空间的一些心得
2014/06/07 Javascript
无限树Jquery插件zTree的常用功能特性总结
2014/09/11 Javascript
jQuery切换所有复选框选中状态的方法
2015/07/02 Javascript
js实现Select列表内容自动滚动效果代码
2015/08/20 Javascript
BootStrap智能表单实战系列(四)表单布局介绍
2016/06/13 Javascript
JavaScript中的splice方法用法详解
2016/07/20 Javascript
JavaScript关于提高网站性能的几点建议(一)
2016/07/24 Javascript
基于JS如何实现给字符加千分符(65,541,694,158)
2016/08/03 Javascript
bootstrap模态框示例代码分享
2017/05/17 Javascript
layui选项卡效果实现代码
2017/05/19 Javascript
JavaScript 值类型和引用类型的初次研究(推荐)
2017/07/19 Javascript
浅谈vue异步数据影响页面渲染
2019/10/29 Javascript
[06:11]2014DOTA2国际邀请赛 专访团结一心的VG战队
2014/07/21 DOTA
python抓取网页中的图片示例
2014/02/28 Python
利用Python如何实现数据驱动的接口自动化测试
2018/05/11 Python
PyCharm 配置远程python解释器和在本地修改服务器代码
2019/07/23 Python
python中web框架的自定义创建
2019/09/08 Python
Win10下python 2.7与python 3.7双环境安装教程图解
2019/10/12 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
2020/12/11 Python
极简的HTML5模版
2015/07/09 HTML / CSS
公司活动方案范文
2014/03/06 职场文书
继承权公证书
2014/04/09 职场文书
PyTorch中的torch.cat简单介绍
2022/03/17 Python
MySQL的存储函数与存储过程的区别解析
2022/04/08 MySQL