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使用mysql模块之获得更新和删除影响的行数的方法
Mar 18 NodeJs
14款NodeJS Web框架推荐
Jul 11 NodeJs
Windows系统下使用Sublime搭建nodejs环境
Apr 13 NodeJs
Nodejs express框架一个工程中同时使用ejs模版和jade模版
Dec 28 NodeJs
NodeJS使用formidable实现文件上传
Oct 27 NodeJs
简单实现nodejs上传功能
Jan 14 NodeJs
nodeJs链接Mysql做增删改查的简单操作
Feb 04 NodeJs
nodejs搭建本地服务器并访问文件的方法
Mar 03 NodeJs
Nodejs--post的公式详解
Apr 29 NodeJs
nodejs操作mongodb的填删改查模块的制作及引入实例
Jan 02 NodeJs
Nodejs连接mysql并实现增、删、改、查操作的方法详解
Jan 04 NodeJs
Nodejs使用Mongodb存储与提供后端CRD服务详解
Sep 04 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
全国FM电台频率大全 - 1 北京市
2020/03/11 无线电
用PHP 4.2书写安全的脚本
2006/10/09 PHP
PHP Memcached应用实现代码
2010/02/08 PHP
PHP及Zend Engine的线程安全模型分析
2011/11/10 PHP
php 读取文件头判断文件类型的实现代码
2013/08/05 PHP
php实现商城购物车的思路和源码分析
2020/07/23 PHP
ASP.NET中基于JQUERY的高性能的TreeView补充
2011/02/23 Javascript
jquery写个checkbox——类似邮箱全选功能
2013/03/19 Javascript
使用闭包对setTimeout进行简单封装避免出错
2013/07/10 Javascript
jquery图片播放浏览插件prettyPhoto使用详解
2014/12/19 Javascript
js css实现垂直方向自适应的三角提示菜单
2016/06/26 Javascript
JS简单获取日期相差天数的方法
2017/04/24 Javascript
使用Bootstrap打造特色进度条效果
2017/05/02 Javascript
原生JS实现的简单轮播图功能【适合新手】
2018/08/17 Javascript
springboot+vue实现文件上传下载
2020/11/17 Vue.js
javascript this指向相关问题及改变方法
2020/11/19 Javascript
[02:51]DOTA2 Supermajor小组分组对阵抽签仪式
2018/06/01 DOTA
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
Python sorted函数详解(高级篇)
2018/09/18 Python
django+echart绘制曲线图的方法示例
2018/11/26 Python
详解Python字典的操作
2019/03/04 Python
使用keras实现Precise, Recall, F1-socre方式
2020/06/15 Python
Django实现微信小程序支付的示例代码
2020/09/03 Python
HTML5拖拉上传文件的简单实例
2017/01/11 HTML / CSS
美国综合购物商城:UnbeatableSale.com
2018/11/28 全球购物
Nike俄罗斯官方网站:Nike RU
2021/03/05 全球购物
服务员岗位职责
2014/01/29 职场文书
面试后的英文感谢信
2014/02/01 职场文书
有趣的广告词
2014/03/18 职场文书
新闻编辑求职信
2014/04/09 职场文书
蟋蟀的住宅教学反思
2014/04/26 职场文书
上班迟到检讨书范文300字
2014/11/02 职场文书
2015年小学图书室工作总结
2015/05/18 职场文书
《小小的船》教学反思
2016/02/18 职场文书
Redis可视化客户端小结
2021/06/10 Redis
Java8 CompletableFuture 异步回调
2022/04/28 Java/Android