Express框架定制路由实例分析

作者:Teacher_Tian_2019 时间:2024-05-11 10:16:42 

1、序言

  上一节快速搭建Express开发系统步骤,对如何使用express-generator创建一个WEB项目进行了说明,本节我们会对这个项目的代码进行分析,完成一个路由功能的开发。涉及的知识点有以下几个:

  1. 开发一个路由模块(可以支持get和post请求)

  2. 测试(get请求用浏览器验证、post请求呢,我就用postman简单处理一下,因为本节课程没有想去讲web端post请求的知识,后续有机会单独讲解吧)

2、开发一个路由模块

  在上一篇文章中讲到,我们以http://localhost:3000/system 路由为例,制作它的get和post请求路由。步骤如下:

2.1 在routes目录下创建system.js文件

代码内容如下

var express = require('express');
var router = express.Router();
// get router
router.get('/', function(req, res, next) {
   res.send('<p>这是get请求/system返回的资源</p>')
});
// post router
router.post('/:id', function(req, res, next) {
   var id = req.params.id;          //注意这里的id是/:id指定的路由参数
   var name = req.body.name;
   var tel = req.body.tel;
   res.json({
       status:'ok',
       message:'你发送的内容('+ id + '、' + name + '、' + tel +')服务器已经收到'
   });
});
module.exports = router;

&emsp;&emsp;解释一下,router.get用于响应http的get请求,router.post用于响应http的post请求。我们在第三部分验证时,分别会通过浏览器和postman分别来对/system路由发起get和post请求。
&emsp;&emsp;此外,/:id这部分会映射到用户的url请求路径中,如你的请求链接是http://localhost:3000/system/2402040134,那么在post的处理函数中,会将:id匹配到2402040134这个值,相当于是一个url参数。同时,要注意,在代码中获取id的值时,使用的是req.params这个对象。不可与req.body混淆。

2.2、如何使路由模块生效

&emsp;&emsp;不过,目前这个代码还没有被注册到/system路径下,接下来我们需要在app.js中添加几行代码。
Express框架定制路由实例分析
&emsp;&emsp;注:在app.js中第9行引入我们的system.js模块,第24行,将这个模块注册在/system路径上。

3、测试验证

&emsp;&emsp;在vs code中没有显示powershell控制台时,可以使用ctrl+` 唤醒。然后输入npm start,启动我们的项目。

3.1 验证router.get

&emsp;&emsp;这里我们通过浏览器访问/system,就可以执行到router.get后边的方法,看看是否会得到预期的返回(是一段Html内容)。
Express框架定制路由实例分析

3.2 验证router.post

&emsp;&emsp;安装postman的过程我不在这里描述了,大家自行安装一下。以下截图是我请求界面的信息及验证结果。
Express框架定制路由实例分析
&emsp;&emsp;注意,在上图中url中的2402040134即路由参数,下方的name和tel是post的请求body内容。最后,可以看到,返回了我们预期的json内容。

4、总结

&emsp;&emsp;内容不是很复杂,写得比较简单,为了方便初学的朋友跟着练习。当然,不忘预告一下,下一章节我会以本文中提到的router.get请求为重点,引入ejs模板的使用,让大家可以通过res对象,通过数据+模板的方式,完成服务器端渲染生成页面。

来源:https://blog.csdn.net/qq_40635837/article/details/109372061

标签:Express,路由,node.js,ejs
0
投稿

猜你喜欢

  • python中Requests发送json格式的post请求方法

    2021-05-24 10:09:45
  • Python时间模块datetime、time、calendar的使用方法

    2023-04-02 06:44:16
  • javascript 用函数语句和表达式定义函数的区别详解

    2024-04-16 09:06:26
  • Mysql数据库备份和还原常用的命令

    2011-12-01 10:41:54
  • 利用python实现简单的循环购物车功能示例代码

    2021-05-12 14:52:58
  • Python Pandas中根据列的值选取多行数据

    2023-02-16 04:17:59
  • 使用Vue自定义指令实现Select组件

    2024-05-09 15:26:41
  • 关于Dreamweaver乱码问题的解决方案

    2010-09-02 12:36:00
  • CentOS7.4手动安装MySQL5.7的方法

    2024-01-28 01:12:20
  • 学习python处理python编码问题

    2022-06-23 22:18:42
  • 谈谈我的“分离”观

    2010-08-31 14:47:00
  • mysql学习笔记之帮助文档

    2024-01-19 08:14:36
  • opencv实现图像旋转效果

    2023-07-17 13:28:40
  • numpy模块中axis的理解与使用

    2023-06-26 22:55:28
  • sql带分隔符的截取字符串示例

    2024-01-13 04:52:12
  • 设计角色的分工和配合

    2008-10-20 12:08:00
  • Python采集C站高校信息实战示例

    2023-11-16 12:01:56
  • python opencv pytesseract 验证码识别的实现

    2021-12-02 06:53:56
  • 利用nohup来开启python文件的方法

    2023-05-08 07:51:29
  • python3+django2开发一个简单的人员管理系统过程详解

    2022-06-01 08:04:01
  • asp之家 网络编程 m.aspxhome.com