本文已参与[新人创作礼]活动, 一起开启掘金创作之路。
前言
在前文,我们已经学习过如何用http模块,实现一个后台接口。
接下来,就让我们更加地深入学习一下这个模块
request请求: 访问路径,方法以及消息体···response响应: HTTP状态码以及消息体···server.on()的相关参数 进行错误、超时、连接·····等等情况的处理
本篇先教学request
request 请求
关于request请求 我们这里主要学习三个知识点
request.url请求路径request.method请求方法request.headers请求头
以上便是request请求中,我们开发常用到的数据,不要小瞧这些信息,通过他们,我们可以实现非常多的奇思妙想:
- 利用
request.url实现后端路由,实现不同访问路径,访问不同文件 - 利用
request.method实现post/get访问限制,post有加密 requset.headers涉及到跨域访问
request相关演示
非常简单,直接打印出来看看就会了,这里我用了模板字符串,respond响应给了浏览器一段html格式的文本。
当然,其实如果只是看信息,最快最好还是控制台console.log打印一下
// 首先导入http模块
const http = require('http');
// 创建http服务对象
const server = http.createServer();
// 绑定事件监听
server.on('request', (request, respond) => {
// 控制台打印request信息
console.log(request.url)
console.log(request.method)
console.log(request.headers)
// 以html文本形式respond给浏览器
// 编写响应头(不写浏览器不识别)
respond.writeHead(200,{'Content-Type':'text/html;charset=UTF8'});
// 发送响应数据
respond.end(`
请求路径:
<p>${request.url}</p> </br>
请求方法:
<p>${request.method}</p> </br>
请求头:
<p>${JSON.stringify(request.headers)}</p> </br>
`);
});
// 绑定监听端口
server.listen(8888);
// 方便控制台快速启动
console.log('您的http服务启动在 http://127.0.0.1:8888/');
运行结果:
浏览器:
控制台:
使用request.url 模拟简易的后端路由
业务描述:
-
模拟fs读取到的文件夹内容,并且保存到变量home_fs与about_fs中
-
使用
request.url对访问路径进行判断,分别响应不同内容
// 模拟fs读取到的文件内容
const home_fs = "<h3>这里是home界面</h3>";
const about_fs = "<h3>这里是about界面</h3>";
// 导入http模块
const http = require('http');
// 创建http服务对象
const server = http.createServer();
// 绑定事件监听
server.on('request', (request, respond) => {
// 编写响应头(不写浏览器不识别)
respond.writeHead(200,{'Content-Type':'text/html;charset=UTF8'});
// 进行逻辑判断
if (request.url == '/' || request.url == '/home.html') {
// 发送响应数据
respond.end(`
请求路径:
<p>${request.url}</p> </br>
为你响应数据:
${home_fs}
`);
} else if (request.url == '/about.html') {
// 发送响应数据
respond.end(`
请求路径:
<p>${request.url}</p> </br>
为你响应数据:
${about_fs}
`);
} else {respond.end("啥也不是")}
});
server.listen(8888);
console.log('您的http服务启动在 http://127.0.0.1:8888/');
运行结果:
IP+端口 (根路径):
IP+端口/home.html
IP+端口/about.html
IP+端口/随意路径