Http是超文本传输协议,实现浏览器和服务器之间传输数据,通常把浏览器称为客户端/前端, 服务器称为后端, 而http协议分为如下二种
描述:
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('服务器启动成功');})
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 });
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 });