【express-generator】02-路由基本使用+api工具测试路由

server/2024/12/27 2:16:47/

上篇回顾

上一篇,我们介绍了安装创建和初始化一个express-generator应用程序,并且给了一些注意点,相信跟着步骤,你也可以做到文章里呈现的效果。


这一篇,我们有两大主题:路由的基本使用、api工具测试路由。

首先进行:

一、express-generator路由的基本使用

依次讲一下常用的方法:GET 和 POST

(修改如:PUT方法,删除如:DELETE方法,后续引入数据库的时候再讲解,本篇主要讲GET和POST。)

GET方法

在讲之前,让我们看看创建和初始化一个e-g(express-generator,后续统一用e-g进行简化)应用程序,给我们的路由案例

主要看这两部分的代码,其他代码已做省略。

//app.js
//....省略代码//路由引入
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');//路由注册(使用)
app.use('/', indexRouter);
app.use('/users', usersRouter);// ...省略代码

这个routes文件夹下的文件,用来写路由方法。 

//routes/index.js
var express = require('express');
var router = express.Router();/* GET home page. */
router.get('/', function(req, res, next) {res.render('index', { title: 'Express' });
});module.exports = router;
//routes.users.js
var express = require('express');
var router = express.Router();/* GET users listing. */
router.get('/', function(req, res, next) {res.send('respond with a resource');
});module.exports = router;

根据默认案例给的路由代码,我们尝试访问这些默认的路由。

启动项目

nodemon npm start

默认路由(注意:我的启动端口号是3004,如果你是3000或其他,则需要对应替换,在bin/www中进行修改,上一篇有进行介绍。)

http://localhost:3004/

http://localhost:3004/users


我们可以按照已给的案例,修改路由方法或者撰写新的路由方法

下面撰写一个新的路由。

/routes/blog.js
var express = require('express');
var router = express.Router();//定义一个对数数组
var studentArray=[{"title": "探索人工智能的未来","content": "本文将探讨人工智能的发展趋势,以及它如何影响我们的日常生活。","id": 1},{"title": "健康饮食的重要性","content": "了解健康饮食的重要性,以及它对提高生活质量的影响。","id": 2},{"title": "旅行日记:环游世界","content": "记录了作者环游世界的所见所闻,以及旅行中的文化体验和感悟。","id": 3},{"title": "科技与教育的结合","content": "本文讨论了科技如何改变教育行业,以及这种结合带来的机遇和挑战。","id": 4},{"title": "环保生活:从我做起","content": "介绍如何通过日常生活中的小改变来实践环保,保护我们的地球。","id": 5}]
/* GET home page. */
router.get('/', function(req, res, next) {
//在返回给前端这个对象数组。res.send(studentArray)
});module.exports = router;

定义一个对象数组,并且通过res.send()在页面进行显示。

接着在app.js中引入和使用这个路由。

//..放在对应位置
var blogRouter=require('./routes/blog');//...代码省略
//..放在对应位置
app.use('/blog', blogRouter);

启动服务

nodemon npm start

访问地址:localhost:30004/blog(对应替换成自己的路由)

(我用的是chrome浏览器)


POST方法

很多时候,我们需要收集前端的数据,比如发送前端的表单数据给后端进行校验等等。

接下来演示POST方法。

我在routes/index.js中,新增了一个post方法。

前端接收两个变量:username和password,在后端进行校验,如果通过验证则返回data对象给前端,否则则返回“验证失败”。

var express = require('express');
var router = express.Router();/* GET home page. */
router.get('/', function(req, res, next) {res.render('index', { title: 'Express' });
});// 新增代码
router.post('/login',function(req, res, next){console.log("前端获取的值>>>",req.body.username,req.body.password);if(req.body.username=='root' && req.body.password=='root'){// const flag=truedata={'flag':true,"message":"验证成功"}res.send(data)}else{res.send("验证失败");}
})
module.exports = router;

这里为了方便演示,我就不写一个html页面进行收集表单数据了。我们借助测试工具进行路由测试。 

打开apipost测试工具

关于apipost工具,可以直接在官网进行下载:Apipost-API 文档、设计、调试、自动化测试一体化协作平台

新增一个post方法(注意把地址写正确,我的启动服务端口是3004,如果没有做修改,那端口号一般就是3000)

 点击发送,则会得到以下结果:

测试发送非正确的数据(username==root,password==123123)

 

发送结果如下:

因为我们设置了以下这种情况,才能通过验证。

req.body.username=='root' && req.body.password=='root'

到此,一个post请求就完成了。


二、APIPOST的使用

API测试工具如Apipost的主要作用包括:

  1. 支持多种API类型与通信协议:Apipost支持HTTP、Websocket、TCP和GRPC等多种协议,能够模拟发送各种HTTP请求(如POST、GET、PUT等)。

  2. 自动化测试与调试:用户可以轻松创建、调试和测试API接口,生成高质量的API文档,并与团队成员进行实时协作和沟通。

  3. 团队协作与版本控制:Apipost支持多人同时编辑和管理API接口,团队成员之间的数据更新会实时同步。同时,它提供了版本控制功能,用户可以查看和管理接口的历史版本。

  4. Mock数据服务:Apipost能预先模拟Mock接口,让开发实现代码先行,后端可以通过先编写Mock数据给前端,从而让前端提前进入接口调用、前端开发状态。

  5. 文档生成与分享:Apipost可以自动生成精美的API文档,支持多种导出格式,方便团队成员查阅和分享。同时,提供了文档权限管理功能,确保文档的安全性。

  6. 丰富的调试工具:提供断点、变量监视和调试日志等丰富的调试工具,帮助用户更方便地进行API调试。

对于前端开发者在团队协作中的作用:

  1. 接口调试与测试前端开发者可以使用Apipost进行常规的接口调试功能和接口自动化测试,利用断言和流程测试功能,进行接口的流程化测试。

  2. Mock数据使用:后端可以通过Apipost先编写Mock数据给前端,让前端提前进入接口调用和开发状态,实现前后端并行开发。

  3. 生成序号代码:Apipost提供主流语言代码自动生成功能,前端开发者每编写一个接口,Apipost都支持生成主流语言代码,提高开发效率。

  4. 文档共享与协作:Apipost支持API文档共享,前端开发者可以快速轻松地生成、查看和分享接口文档,大幅度节省了不必要的时间消耗,同时,也提高了沟通协作的效率。

  5. 项目进度同步:Apipost将API文档共享、个人资源同步、项目进度同步以及项目全局管控串联起来,通过统一、规范的协作打通所有工作流程,从而大幅度提升工作效率。

 这里发几张我平时练习使用到的常用方法(注意看各种参数

POST方法

在后端的具体方法中,通过req.body.xx进行获取。比如req.body.id就是对象中的id

req 是 Node.js 中 Express 框架的一个内置对象,代表 HTTP 请求。它包含了请求的详细信息,如请求头、请求参数、请求体等。req.body req 对象的一个属性,它包含了客户端通过 HTTP 请求发送的数据,通常是在 POST 或 PUT 请求中发送的数据。

注意:这里的 req.body 是通过 Express 的内置中间件 express.json()express.urlencoded() 解析的,这些中间件能够解析 JSON 或 URL 编码的请求体,并将其存储在 req.body 中。如果你没有在 Express 应用中使用这些中间件,req.body 将不会被解析,你将无法访问请求体中的数据。

你创建一个express-generator应用程序,这些中间件就会自动帮我们生成,只要专心负责业务逻辑即可。


GET方法

(这里在header中添加content-type和authenrization)

Content-Type 是 HTTP 请求头(header)中的一个字段,用于指定发送给服务器的内容的媒体类型(也称为 MIME 类型)。这个字段告诉服务器,客户端发送的数据是什么类型的,这样服务器就可以正确地解析和处理这些数据。

Authorization 是 HTTP 请求头中的一个字段,用于在客户端请求中提供身份验证凭证,以便访问受保护的资源。 

 PUT方法

(这里的演示案例,需要携带authenrization给后端进行验证,验证通过才能进行修改)

 

 到此,APIPOST常用的方法已经介绍完毕。

接下来的express-generator更新内容,我们会尝试将express-generator应用程序跟热门的前端框架(如vue/react)建立联系(主要通过接口进行数据获取)以及跟数据库(mysql)建立联系(连接数据库、表的增删改查等等)


如果你喜欢这篇文章,可以点赞收藏。

关注我,了解更多实用的前端知识。


http://www.ppmy.cn/server/153490.html

相关文章

【Spark】架构与核心组件:大数据时代的必备技能(下)

🐇明明跟你说过:个人主页 🏅个人专栏:《大数据前沿:技术与应用并进》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、什么是Apache Spark 2、Spark 的应用场景&…

MySQL 查询优化案例分享

在日常开发中,SQL 查询性能直接影响到系统的响应速度和用户体验。随着数据量的增长,慢查询可能成为系统的瓶颈。本文将通过实际案例,分享几种常见的 MySQL 查询优化方法,帮助开发者快速定位和优化慢查询,提升数据库性能…

细说STM32F407单片机轮询方式读写SPI FLASH W25Q16BV

目录 一、工程配置 1、时钟、DEBUG 2、GPIO 3、SPI2 4、USART6 5、NVIC 二、软件设计 1、FALSH (1)w25flash.h (2) w25flash.c 1)W25Q16基本操作指令 2)计算地址的辅助功能函数 3)器…

Berlandesk 注册系统算法实现与解析

一、引言 在不久的将来,一款名为 “Berlandesk” 的电子邮件服务将在 Berland 地区开放,站点管理员希望尽快启动项目,其中很关键的一部分就是实现站点注册系统的原型。本文将详细介绍这个注册系统的功能要求以及使用 Python 语言实现的具体代…

面试真题:Integer(128)引发的思考

引言 在 Java 编程语言中,数据类型的使用至关重要。作为一种静态类型语言,Java 提供了丰富的基本数据类型和对应的包装类。其中,Integer 类是 int 类型的包装类,承载着更复杂的功能,如缓存、装箱和拆箱等。掌握 Integ…

Hive与HBase的区别有哪些

Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql 查询功能,可以将 sql 语句转换为 MapReduce 任务进行运行。 HBase 是 Hadoop 的数据库,一个分布式、可扩展、大数据的存储。 …

选择屏幕的用法

**************************定义控件*********************************** SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-002. SELECT-OPTIONS bukrs FOR iloa-bukrs . "公司代码 SELECT-OPTIONS swerk FOR iloa-swerk OBLIGATORY . "工厂 SELECT-O…

【作业】LSTM

目录 习题6-4 推导LSTM网络中参数的梯度, 并分析其避免梯度消失的效果 ​编辑 习题6-3P 编程实现下图LSTM运行过程 1. 使用Numpy实现LSTM算子 2. 使用nn.LSTMCell实现 3. 使用nn.LSTM实现 参考链接 习题6-4 推导LSTM网络中参数的梯度, 并分析其…