如何将参数传递给react.js中的API get请求

时间:2018-05-27 11:57:08

标签: node.js reactjs express mongoose

我想知道有没有办法将参数从客户端传递到后端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 });

}

2 个答案:

答案 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);
     });
});