NodeJS 使用request制作简易后端路由 深入学习http模块——request

118 阅读1分钟

本文已参与[新人创作礼]活动, 一起开启掘金创作之路。

前言

在前文,我们已经学习过如何用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/');

运行结果:

浏览器: image.png

控制台:

image.png

使用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+端口 (根路径):

image.png

IP+端口/home.html

image.png

IP+端口/about.html

image.png

IP+端口/随意路径

image.png