Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否将参数传递给节点js API调用?_Javascript_Node.js - Fatal编程技术网

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

Javascript 是否将参数传递给节点js API调用?,javascript,node.js,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 }

我正在为来自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方法添加参数以传递文件名?

看起来您正在服务器端使用
express
,因此您只需在请求
URL
中添加参数,然后在服务器端获取参数即可

在前端或客户端,您将像

fetch('/xxx/FileName')
在后端,您将修改您的路由,如

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

另外,您不希望每次收到请求时都要求。所以您最好移动
var AWS=require('AWS-sdk')在您的请求处理程序之外

您是否在服务器端使用express?您可以使用查询参数并通过这种方式从请求URL读取文件名。