首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用Micronaut创建返回二进制内容的AWS Lambda函数

使用Micronaut创建返回二进制内容的AWS Lambda函数
EN

Stack Overflow用户
提问于 2018-05-25 16:16:39
回答 2查看 602关注 0票数 4

我不确定这是Micronaut问题还是AWS Gateway问题。任何帮助都是很棒的。

我正在尝试使用Micronaut框架来创建一个Lambda函数,该函数通过AWS API网关返回一个pdf。这是否受支持?要返回二进制内容,需要更改哪些内容?我曾尝试将该方法的返回类型更改为byte[],但看起来Content-Type始终为application/json。

作为背景,我希望使用Groovy编写函数,并使用DynamoDB中的数据创建动态报告。

在此之前,非常感谢您。

EN

回答 2

Stack Overflow用户

发布于 2018-05-28 17:48:51

我现在已经设法让它工作起来了。

我已经创建了一个响应对象:

代码语言:javascript
代码运行次数:0
运行
复制
class ReportResponse {

    boolean isBase64Encoded = true
    def headers
    byte[] body
}

然后在我的处理程序中,我有:

代码语言:javascript
代码运行次数:0
运行
复制
ReportResponse reports(data, Context context) {
    return new ReportResponse(
        headers:  [ "Content-Type": "application/pdf" ],
        body: JasperExportManager.exportReportToPdf(new 
    MemberReport().getReport(data.queryStringParameters.id)))
}

不幸的是,当我在ReportResponse类中硬编码头部时,出现了一个控制台错误(关于OpenJDK..)

上面的代码允许我在AWS API Gateway中使用Lambda代理,因此完整的请求对象将传递给函数。

唯一的其他更改是在AWS API Gateway中将'*/*‘设置为二进制,这对我的用例来说很好。

票数 2
EN

Stack Overflow用户

发布于 2018-05-25 23:13:23

您尝试过使用@Produces

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50524576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档