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(二)--- Node.js事件模块
May 21 NodeJs
NodeJS制作爬虫全过程
Dec 22 NodeJs
Nodejs中读取中文文件编码问题、发送邮件和定时任务实例
Jan 01 NodeJs
NodeJs读取JSON文件格式化时的注意事项
Sep 25 NodeJs
nodejs 实现钉钉ISV接入的加密解密方法
Jan 16 NodeJs
详解nodejs中的process进程
Mar 19 NodeJs
NodeJS收发GET和POST请求的示例代码
Aug 25 NodeJs
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
Sep 18 NodeJs
Nodejs下使用gm圆形裁剪并合成图片的示例
Feb 22 NodeJs
nodejs acl的用户权限管理详解
Mar 14 NodeJs
Nodejs实现的操作MongoDB数据库功能完整示例
Feb 02 NodeJs
如何利用nodejs实现命令行游戏
Nov 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实现ftp上传文件示例
2014/08/21 PHP
Thinkphp搜索时首页分页和搜索页保持条件分页的方法
2014/12/05 PHP
php文件上传 你真的掌握了吗
2016/11/28 PHP
php学习笔记之mb_strstr的基本使用
2018/02/03 PHP
基于Jquery的淡入淡出的特效基础练习
2010/12/13 Javascript
IE6下javasc#ipt:void(0) 无效的解决方法
2013/12/23 Javascript
实现非常简单的js双向数据绑定
2015/11/06 Javascript
基于jquery实现智能提示控件intellSeach.js
2016/03/17 Javascript
总结JavaScript三种数据存储方式之间的区别
2016/05/03 Javascript
Jquery实现上下移动和排序代码
2016/10/17 Javascript
从零开始学习Node.js系列教程五:服务器监听方法示例
2017/04/13 Javascript
使用cropper.js裁剪头像的实例代码
2017/09/29 Javascript
javascript获取图片的top N主色值方法详解
2018/01/26 Javascript
vue-image-crop基于Vue的移动端图片裁剪组件示例
2018/08/28 Javascript
创建Vue项目以及引入Iview的方法示例
2018/12/03 Javascript
vue filter 完美时间日期格式的代码
2019/08/14 Javascript
判断JavaScript中的两个变量是否相等的操作符
2019/12/21 Javascript
vue实现的封装全局filter并统一管理操作示例
2020/02/02 Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
2020/09/07 Javascript
vue form表单post请求结合Servlet实现文件上传功能
2021/01/22 Vue.js
Python编程中time模块的一些关键用法解析
2016/01/19 Python
python实现图片筛选程序
2018/10/24 Python
django迁移数据库错误问题解决
2019/07/29 Python
Python3离线安装Requests模块问题
2019/10/13 Python
Python实现自定义读写分离代码实例
2019/11/16 Python
英国综合网上购物商城:The Hut
2018/07/03 全球购物
美国在线购买空气净化器、除湿器、加湿器网站:AllergyBuyersClub
2021/03/16 全球购物
上海期货面试题
2014/01/31 面试题
生产主管岗位职责
2013/11/10 职场文书
社团2014年植树节活动总结
2014/03/11 职场文书
小学生评语集锦
2014/04/18 职场文书
人事经理岗位职责
2014/04/28 职场文书
学生检讨书怎么写
2014/10/09 职场文书
2015年元旦促销方案书
2014/12/09 职场文书
SQL SERVER触发器详解
2022/02/24 SQL Server
解决vue自定义组件@click点击失效问题
2022/04/30 Vue.js