将参数传递给节点js API调用?

时间:2018-12-22 00:50:12

标签: javascript node.js

我正在为S3存储桶中的文件生成预授权链接,但希望传递文件名以作为参数下载。

这是我的API的样子:

reports.get('/xxx', async (req, res) => {

  var AWS = require('aws-sdk');

  var s3 = new AWS.S3();

  var params = { 
    Bucket: config.xxx,
    Key: 'xxx/xxx.json',
    Expires: 60 * 5
  }

  try {
    s3.getSignedUrl('getObject', params, function (err, url) {
      if(err)throw err;
      console.log(url)
      res.json(url);
    });
  }catch (err) {
    res.status(500).send(err.toString());
  }
});

这是我从前端起的称呼方式:

getPreauthorizedLink(e){
    fetch(config.api.urlFor('xxx'))
        .then((response) => response.json())
        .then((url) => {

        console.log(url);
    });
}

如何为API调用和相应的API方法添加参数以传递文件名?

1 个答案:

答案 0 :(得分:2)

好像您在服务器端使用express,因此您只需在请求URL中添加参数,然后在服务器端获取它们即可。

在前端或在客户端,您将像这样呼叫Api

fetch('/xxx/FileName')

在后端,您将像这样修改路由

 reports.get('/xxx/:fileName', ..){
   var fileName = req.params.fileName
}

您也不想每次收到请求时都要求。因此,最好将var AWS = require('aws-sdk');移到请求处理程序之外。