nodejs-Http模块-服务器搭建
Posted 德源3d24
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodejs-Http模块-服务器搭建相关的知识,希望对你有一定的参考价值。
目录
HTTP协议简介
描述
Http是超文本传输协议,实现浏览器和服务器之间传输数据,通常把浏览器称为客户端/前端, 服务器称为后端, 而http协议分为如下二种
- http协议:实现客户端和服务器之间传输数据的规则 不加密传输数据
- https协议:实现客户端和服务器之间传输数据, 加密传输数据
Http常用访问方式
-
GET:GET访问不加密的, 并且提交的数据直接在地址栏中, 一般使用GET是请求一些资源访问
-
Post:Post访问是加密的, 并且提交的数据都是在数据体里面, 一般访问比较重要安全级别比较高的资源才使用post访问
-
http模块简介
描述:
- http模块是node-npm内置模块
- 实现了客户端和服务器之间传输数据
- 必须引用http模块才能搭建服务器和客户端
- req请求对象包含了客户端的详细信息(url/请求参数/主机名/端口/协议/data数据)
- res响应对象可以设置服务器给客户端的请求和参数(设置/获得/删除/是否以发送/-响应头信息, 发送数据
附加重要:
-
服务器和客户端传输数据的格式是buffre(缓冲器/流)的模式,需要转换成对应的格式才能显示原数据
- 客户端和服务器之间传输数据,最好使用JOSN格式传输
-
服务器搭建
搭建步骤:
-
-
- 通过require函数引用http模块
- 通过createServer函数创建服务器实列
- 通过listen函数监听端口
- 通过setTimeout设置超时时间
- 通过on方法绑定监听事件
-
服务器监听事件:
- request:客户端发送请求时触发此事件
- connect:客户端发送连接请求时触发此事件
- close:服务器关闭是触发此事件
- error:发送错误是触发此事件
- timeout:连接超时触发此事件
简单创建服务器方式一
1 //引用http模块 2 const http = require(\'http\'); 3 4 //创建服务器实列,并且绑定请求事件(request),客户端发送请求时触发事件 5 let server = http.createServer(function (req,res) 6 { 7 /** 8 * req:请求头对象,里面包含了客户端发送过来的数据,也包含了地址/端口等等 9 * res:响应对象,把数据发送给客户端,通过end方法实现发送数据 10 */ 11 console.log(req.method);//获取请求方法GET/post 12 console.log(req.url);//获得请求对象的url地址 13 console.log(req.headers);//获得请求头信息 14 console.log(req.httpVersion);//获得http版本号 15 console.log(req.socket);//获得请求对象的socket对象 16 17 res.end("欢迎使用")//发送数据给客户端,并且关闭断开连接 18 19 }).listen(3000,()=>{console.log(\'端口开始运行是触发\');});//监听断开事件
简单创建服务器方式二
1 //引用http模块 2 const http = require(\'http\'); 3 4 //创建服务器实列 5 let server = http.createServer() 6 7 //绑定(监听)请求事件 8 server.on("request",(req,res)=> 9 { 10 console.log(req.method);//获取请求方法GET/post 11 console.log(req.url);//获得请求对象的url地址 12 console.log(req.headers);//获得请求头信息 13 console.log(req.httpVersion);//获得http版本号 14 console.log(req.socket);//获得请求对象的socket对象 15 16 res.end("欢迎使用")//发送数据给客户端,并且关闭断开连接 17 }) 18 19 //监听端口,当服务器运行时触发此事件 20 server.listen(8080,()=>{console.log(\'服务器启动成功\');})
req请求对象详情案例
1 const http = require(\'http\'); 2 const url = require(\'url\'); 3 4 //创建一个http服务器 5 let server = http.createServer(); 6 //监听端口 7 server.listen(8888, \'0.0.0.0\'); 8 9 //接收到客户端请求时触发 10 server.on(\'request\', function (req, res) { 11 12 //解析url返回一个url对象 13 //如果参数二设为true,则url对象中的query属性将通过querystring.parse()生成一个对象 14 let params = url.parse(req.url, true); 15 16 //完整url地址 17 console.log(\'href\', params.href);//index?name=123&age=32 18 //主机名,包含端口 19 console.log(\'host\', params.host); 20 //主机名,不包含端口 21 console.log(\'hostname\', params.hostname); 22 //端口 23 console.log(\'port\', params.port); 24 //协议 25 console.log(\'protocol\', params.protocol); 26 //路径,包含查询字符串 27 console.log(\'path\', params.path); 28 //路径,不包含查询字符串 29 console.log(\'pathname\', params.pathname); 30 //查询字符串,不包含 ?而且返回一个对象,包含了网址提交的参数数据,但是是在原型里面 31 console.log(\'query\', params.query);
32 //获取网址GET提交的变量的值,
33 console.log(\'query\', params.query.变量);
//追加--第二种方式获得参数
let url2=url.parse(req.url,true).query;
console.log(url2.age);
32 //查询字符串,包含 ? 33 console.log(\'search\', params.search); 34 //散列字符串,包含 # 35 console.log(\'hash\', params.hash); 36 37 res.end(\'end\'); 38 });
res响应对象设置详情
1 const http = require(\'http\'); 2 const url = require(\'url\'); 3 4 //创建一个http服务器 5 let server = http.createServer(); 6 //监听端口 7 server.listen(8888, \'0.0.0.0\'); 8 9 //接收到客户端请求时触发 10 server.on(\'request\', function (req, res) { 11 12 //设置响应头信息 13 res.setHeader(\'Content-Type\', \'text/html;charset=utf-8\'); 14 15 //获取响应头信息 16 res.getHeader(\'Content-Encoding\'); 17 18 res.setHeader(\'test\', \'test\'); 19 //删除响应头信息 20 res.removeHeader(\'test\'); 21 22 //判断响应头是否已发送 23 console.log(res.headersSent ? \'已发送\' : \'未发送\'); 24 25 //注意writeHead()与setHeader()的区别,setHeader()并不会立即发送响应头。 26 //而writeHead()会发送,writeHead()设置的响应头比setHeader()的优先。 27 res.writeHead(200, { 28 \'aaa\': \'aaa\' 29 }); 30 31 //判断响应头是否已发送 32 console.log(res.headersSent ? \'已发送\' : \'未发送\'); 33 34 //如何不发送日期 Date,设置为false将不发送Date 35 res.sendDate = false; 36 37 //设置响应的超时时间 38 res.setTimeout(30 * 1000); 39 res.on(\'timeout\', function () { 40 console.log(\'响应超时\'); 41 }); 42 43 //向客户端发送数据 44 //由于res响应对象也是一个流,所以可以使用write()来写数据 45 res.write(Buffer.from(\'你好\')); 46 res.write(Buffer.from(\'欢迎\')); 47 48 res.end(\'end\'); 49 });
HTTP客户端简介(前端)
描述:
- 客户端就是和用户实现交互的,浏览器展现页面.用户查看页面就形成了交互
- 客户端把用户的数据传输给服务器,一般服务器处理逻辑判断/储存
以上是关于nodejs-Http模块-服务器搭建的主要内容,如果未能解决你的问题,请参考以下文章
CTS测试CtsWindowManagerDeviceTestCases模块的testShowWhenLockedImeActivityAndShowSoftInput测试fail项解决方法(代码片段
spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段