nodejs-Http-服务器-客户端搭建
2021/9/7 1:07:50
本文主要是介绍nodejs-Http-服务器-客户端搭建,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
- Http协议简介
- http模块简介
- 服务器搭建步骤
- 服务器监听事件
- 简单创建服务器方式一
- 简单创建服务器方式二
- req请求对象详情案例
- res响应对象设置详情
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); //获取网址GET提交的变量的值, 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-服务器-客户端搭建的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-21Vue3教程:新手入门到实践应用
- 2024-12-21VueRouter4教程:从入门到实践
- 2024-12-20Vue3项目实战:从入门到上手
- 2024-12-20Vue3项目实战:新手入门教程
- 2024-12-20VueRouter4项目实战:新手入门教程
- 2024-12-20如何实现JDBC和jsp的关系?-icode9专业技术文章分享
- 2024-12-20Vue项目中实现TagsView标签栏导航的简单教程
- 2024-12-20Vue3入门教程:从零开始搭建你的第一个Vue3项目
- 2024-12-20从零开始学习vueRouter4:基础教程
- 2024-12-20Vuex4课程:新手入门到上手实战全攻略