2022-02-28 Node.js Express框架学习笔记(四) express如何获取前端发送的get请求和post请求的参数

本文详细介绍了在Node.js的Express框架中如何获取前端发送的GET和POST请求的参数,包括利用FeHelper插件、同一路径响应多种请求、配置body-parser处理字符串和JSON类型的数据。总结了通过req.query获取GET请求参数,以及使用body-parser处理POST请求参数的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法一:借助FeHelper插件>简易postman和req.query获取get请求参数
代码

loginRouter.js

var express = require("express");
var router = express.Router();
router.get("/login", function(req, res) {
    console.log(req.query);//获取get请求参数
    res.send("login page");
});
// 导出路由
module.exports = router;

index.js

// 导入路由中间件
var homeRouter = require("./router/homeRouter");
var loginRouter = require("./router/loginRouter");

app.use("/", homeRouter);
app.use("/", loginRouter);
app.use(function(req, res) {
    res.status(404).send(`<html><h2>404 not found</h2></html>`);
});
app.listen(3000, function(req, res) {
    console.log("server connect...");
});

postman:输入http://127.0.0.1:3000/login?name=zs&id=123456
在这里插入图片描述
结果:终端输出

server connect...
{ name: 'zs', id: '123456' }
方法二:同一个路径响应多种请求
代码

loginRouter.js

var express = require("express");
var router = express.Router();
// 路由级别:响应前端的get请求
router.get("/login", function(req, res) {
    console.log(req.query);
    res.send("login page");
});
// 路由级别:响应前端的post请求
router.post("/login");
// 路由级别:响应前端的put请求
// 路由级别:响应前端的delete请求
//同一个路径可以响应多种请求来实现增删改查

// 导出路由
module.exports = router;
方法三:配置第三方中间件body-parser处理POST请求的数据(username = ‘zs’& password = '12345字符串类型)
body-parser

第三方中间件body-parser在新版本中已经变成内置中间件,引入express后即可直接使用
引入方式:
新版本:

app.use(express.urlencoded({ extended: false }))

旧版本:

var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended:  false })); 
代码

indexRouter.js

var express = require("express");
var router = express.Router();
// 路由级别:响应前端的get请求
router.get("/login", function(req, res) {
    console.log(req.query);
    res.send("login page");
});
// 路由级别:响应前端的post请求
router.post("/login", function(req, res) {
        // console.log(req.body); //必须配置中间件body-parser
    var obj = req.body;
    for (var attr in obj) {
        console.log(attr, "=", obj[attr]);
        //输出:username = zs
		//password = 123456
    }
    res.send({ isOk: true });
});
module.exports = router;

index.js

...
// 设置解析post参数的中间件,不用第三方,内置中间件
app.use(express.urlencoded({ extended: false }));
//这句话是固定搭配,表示可以处理post请求这种类型的参数:
...其他代码同上例...
结果

postman:
在这里插入图片描述
终端:
[Object: null prototype] { username: ‘zs’, password: ‘123456’ }

成功得到post请求的参数 { username: ‘zs’, password: ‘123456’ }

方法四:配置第三方中间件body-parser处理POST请求的数据({‘name’:‘zs’,‘age’:18}JSON类型)
代码

index.js

app.use(express.json());//可以处理post请求json类型的数据
...其他代码不变..
结果

postman:注意请求头要改成application/json
在这里插入图片描述
终端:
[Object: null prototype] { name: ‘zs’, age: ‘18’ }

成功获得数据

总结

GET请求:
地址栏或postman输入请求参数
console.log(req.query())获取参数并输出
POST请求:
引入body-parser第三方中间件/内置中间件

  • 对于字符串数据:app.use(express.urlencoded({ extended: false }));
  • 对于JSON数据:app.use(express.json());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端OnTheRun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值