Reactjs 将URL中不存在的参数发送到API
我使用advancedFetch向我的API发送请求。这是可行的,但是,我想知道是否可以发送一个参数而不在URL中定义它。有什么聪明的方法可以做到这一点吗 我试着研究它,但我不确定我在尝试做什么时使用了正确的关键字 这是我设置请求的地方(该值来自模式输入字段): 在我的控制器中,我定义了路由并实现了如下功能:Reactjs 将URL中不存在的参数发送到API,reactjs,api,request,Reactjs,Api,Request,我使用advancedFetch向我的API发送请求。这是可行的,但是,我想知道是否可以发送一个参数而不在URL中定义它。有什么聪明的方法可以做到这一点吗 我试着研究它,但我不确定我在尝试做什么时使用了正确的关键字 这是我设置请求的地方(该值来自模式输入字段): 在我的控制器中,我定义了路由并实现了如下功能: index.create = (req, res, next) => { let userName = req.params.userName; c
index.create = (req, res, next) => {
let userName = req.params.userName;
console.log(userName);
user
.create(userName)
.then((response) => {
res.send(response);
})
.catch((err) => {
next(err);
});
};
router.post('/users', index.create);
然后在my service.js中,我将数据写入数据库:
create: function(userName){
userName = userName
return query(`INSERT INTO ${tableName} (user) VALUES (?, ?)`, [1, userName])
.catch(err => {
app.logger.error('[Users] failed to create a user', err.message);
return Promise.reject(new Error('failed to create user'));
});
},
我总是得到一个未定义的用户名,我是否必须在末尾创建一个带有值的路由?您收到的用户名是未定义的,因为您发送的请求是JSON编码的数据,而不是URL参数,同样的逻辑不适用于这种情况 幸运的是,有一个简单的方法来解决您的问题,使用。它很容易使用 以下是初始化它的方式:
var express = require('express')
var bodyParser = require('body-parser')
var app = express()
// parse application/json
app.use(bodyParser.json())
这是您在路由器功能中读取“用户名”的方式:
index.create = (req, res, next) => {
let userName = req.body.userName;
console.log(userName);
user
.create(userName)
.then((response) => {
res.send(response);
})
.catch((err) => {
next(err);
});
};
顺便说一句,当您调用advancedFetch时,您实际上应该这样做:
body: JSON.stringify({newUserName: userName}),
是的,您实际上可以这样做: 在前端调用中,您可以像这样通过主体发送参数
body: JSON.stringify({userName: userName})
然后在控制器中,您要做的是直接从主体访问参数:
let userName = req.body.userName;
现在它不再是未定义的:)
let userName = req.body.userName;