Javascript

nodejs-Http-服务器-客户端搭建

本文主要是介绍nodejs-Http-服务器-客户端搭建,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录

  1. Http协议简介
  2. http模块简介
  3. 服务器搭建步骤
  4. 服务器监听事件
  5. 简单创建服务器方式一
  6. 简单创建服务器方式二
  7. req请求对象详情案例
  8. res响应对象设置详情

 

HTTP协议简介


 

描述

Http是超文本传输协议,实现浏览器和服务器之间传输数据,通常把浏览器称为客户端/前端服务器称为后端, 而http协议分为如下二种

      1. http协议:实现客户端和服务器之间传输数据的规则    不加密传输数据
      2. https协议:实现客户端和服务器之间传输数据,     加密传输数据

Http常用访问方式

      1. GET:GET访问不加密的,   并且提交的数据直接在地址栏中,    一般使用GET是请求一些资源访问

      2. Post:Post访问是加密的,  并且提交的数据都是在数据体里面,  一般访问比较重要安全级别比较高的资源才使用post访问  

 


http模块简介

      描述:

      1. http模块是node-npm内置模块
      2. 实现了客户端和服务器之间传输数据
      3. 必须引用http模块才能搭建服务器和客户端
      4. req请求对象包含了客户端的详细信息(url/请求参数/主机名/端口/协议/data数据)
      5. res响应对象可以设置服务器给客户端的请求和参数(设置/获得/删除/是否以发送/-响应头信息,  发送数据 

     附加重要:

      1. 服务器和客户端传输数据的格式是buffre(缓冲器/流)的模式,需要转换成对应的格式才能显示原数据

      2. 客户端和服务器之间传输数据,最好使用JOSN格式传输

服务器搭建

搭建步骤:

      • 通过require函数引用http模块
      • 通过createServer函数创建服务器实列
      • 通过listen函数监听端口
      • 通过setTimeout设置超时时间
      • 通过on方法绑定监听事件

服务器监听事件:

  1. request:客户端发送请求时触发此事件
  2. connect:客户端发送连接请求时触发此事件
  3. close:服务器关闭是触发此事件
  4. error:发送错误是触发此事件
  5. 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客户端简介(前端)

描述:

    1. 客户端就是和用户实现交互的,浏览器展现页面.用户查看页面就形成了交互
    2. 客户端把用户的数据传输给服务器,一般服务器处理逻辑判断/储存

 

 

 

 

这篇关于nodejs-Http-服务器-客户端搭建的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!