我想知道有没有办法将参数从客户端传递到后端API获取请求。此时我硬编码了所需的参数(名称:“newName”)。
后端路线:
@Convert
我的行动方法:
app.get('/api/get/beerWithComments', (req,res,next) =>{
Beer.findOne({name:'newName'}) //I want to pass the correct name, now it's hard coded.
.populate('comments').exec((err,beer) =>{
if(err) return next(err);
res.json(beer);
});
});
我想在这里传递参数。但我不知道我是否可以将参数传递给我的后端。
export const fetchBeerWithComments =() => async dispatch => {
const res= await axios.get('/api/get/beerWithComments');
dispatch({type: FETCH_BEER_WITH_COMMENTS, payload : res.data });
}
答案 0 :(得分:3)
您可以在查询字符串中传递参数name
,并使用req.query
读取处理程序中的参数值,如
app.get('/api/get/beerWithComments', (req, res, next) =>{
var qname = req.query.name || "";
if(!qname.length) {
res.status(404).json({"msg": 'Invalid name in query string'});
res.end();
return;
}
Beer.findOne({name: qname}) //I want to pass the correct name, now it's hard coded.
.populate('comments').exec((err,beer) =>{
if(err) return next(err);
res.json(beer);
});
});
从客户端调用GET API时,只需添加具有相应值的查询字符串参数name
,它应该按预期工作。
例如,URL就像
export const fetchBeerWithComments =(parameter) => async dispatch => {
const res= await axios.get('/api/get/beerWithComments?name=' + parameter);
dispatch({type: FETCH_BEER_WITH_COMMENTS, payload : res.data });
}
答案 1 :(得分:1)
如果您需要将其传回,您可以更改api端点以获得动态参数,例如将获取端点更改为:
/api/get/beerWithComments/:beerName
所以在前端你可以拥有
export const fetchBeerWithComments = (beerName) => async dispatch => {
const res= await axios.get(`/api/get/beerWithComments/${ beerName }`);
dispatch({type: FETCH_BEER_WITH_COMMENTS, payload : res.data });
}
然后在后端
app.get('/api/get/beerWithComments/:beerName', (req,res,next) =>{
Beer.findOne({name: req.params.beerName})
.populate('comments').exec((err,beer) => {
if(err) return next(err);
res.json(beer);
});
});