javascript-将参数附加到api请求?

我有一个调用方法,传递了一个文件名,然后对后端进行API调用获取预授权的链接.我正在尝试将参数(文件名)附加到URL的末尾,但这导致我的API请求到达404.

如何在API请求中正确传递参数并在响应中获取预授权的URL?

我的文件名也可能包含空格,我怀疑这可能与返回404的请求有关.

这是我前端的电话:

getPreauthorizedLink(fileName) {   
    console.log(fileName);
    var fileName = fileName;
    var url = 'reportPresignedURL/' + fileName;
    fetch(config.api.urlFor(url))
    .then((response) => response.json())
    .then((url) => {
        console.log(url);
    });
}

这是该API在后端的实现:

reports.get('/reportPresignedURL/:fileName',async (req,res) => {
    const subscriberID = req.query.subscriberID || 0;

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

    var s3 = new AWS.S3();

    var params = { 
        Bucket: config.reportBucket,Key: req.params.fileName,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(fileName){

    console.log(fileName);

    var fileName = fileName;

    var testFileName = 'test';

    var url = 'reportPresignedURL/' + testFileName.replace(/ /g,'%20').replace(/\//g,'%2F');

    fetch(config.api.urlFor(url))
    .then((response) => response.json())
    .then((url) => {

      console.log(url);
  });
  }

这是我在config.js中指定API路由的方式:

reportPresignedURL: '/reports/reportPresignedURL',

我也尝试过这样指定它:

reportPresignedURL: '/reports/reportPresignedURL/:fileName',

供您参考,我已将此API路由添加到前端的config.js中.

最佳答案
您可以使用es6语法
   let url = reportPresignedURL / ${fileName};
 用于查询参数

let url = reportPresignedURL /?fileName = ${fileName};

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...