gpt4 book ai didi

csv - API 网关 + Lambda 下载 CSV 文件

转载 作者:行者123 更新时间:2023-12-04 00:38:03 25 4
gpt4 key购买 nike

我想用 API Gateway + Lambda 做一个 csv 下载链接。
但是有一个问题是 lambda 总是返回 JSON.stringify。有没有办法解决这个问题?

s-function.json

"responses": {
"default": {
"statusCode": "200",
"responseParameters": {
"method.response.header.Content-disposition": "'attachment; filename=testing.csv'"
},
"responseTemplates": {
"text/csv": ""
}
}
}

处理程序
var json2csv = require('json2csv');
module.exports.handler = function(event, context, cb) {
var fields = ['car', 'price', 'color'];
var myCars = [
{
"car": "Audi",
"price": 40000,
"color": "blue"
}, {
"car": "BMW",
"price": 35000,
"color": "black"
}, {
"car": "Porsche",
"price": 60000,
"color": "green"
}
];
var csv = json2csv({ data: myCars, fields: fields });
return cb(null, csv);
};

在下载的 csv 文件中。

"\"car\",\"price\",\"color\"\n\"Audi\",40000,\"blue\"\n\"BMW\",35000,\"black\"\n\"Porsche\",60000,\"green\""



更新:

我还在努力,但谢谢你至少我有方向。
顺便说一下,我找不到关于 $input.body.replaceAll 的 API Gateway 文档。 replaceAll 是 Java 函数吗?

最后,我通过 Api Gateway 模板中的以下代码解决了这个问题。
$input.body.replaceAll("\\""","").replaceAll("""","").replaceAll("\\n","
")

s-function 转义双引号。
"responseTemplates": {
"text/csv": "$input.body.replaceAll(\"\\\\\"\"\",\"\").replaceAll(\"\"\"\",\"\").replaceAll(\"\\\\n\",\"\n\")"
}

返回数据:
car,price,color
Audi,40000,blue
BMW,35000,black
Porsche,60000,green

模板最终的 replaceAll 很奇怪。 CSV 无法识别\n 或\r\n,但我尝试在 IDE 中复制新行并传递给代码。它有效而且很神奇。

最佳答案

自从您提出这个问题以来,无服务器已经发生了一些变化,但是如果您使用的是 lambda_proxy 集成方法,则可以使用如下处理程序:

module.exports.handler = (event, context, callback) => {
const csvRows = [
'1,"blah",123',
'2,"qwe",456'
]
const result = csvRows.reduce((prev, curr) => {
return prev + '\n' + curr
})
callback(null, {
headers: {
'Content-Type': 'text/csv',
'Content-disposition': 'attachment; filename=testing.csv'
},
body: result,
statusCode: 200
})
}

注意:我已经使用了 ES6 特性,所以你需要使用 Node 6 或更高版本来直接复制粘贴这个例子。

关于csv - API 网关 + Lambda 下载 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38713469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com