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

时间:2018-05-25 08:16:39

标签: micronaut

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

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

作为一个上下文,我希望使用Groovy来编写函数,使用Dynamic Reports来使用DynamoDB中的数据创建PDF。

非常感谢提前。

2 个答案:

答案 0 :(得分:2)

我现在已经设法让这个工作。

我创建了一个响应对象:

class ReportResponse {

    boolean isBase64Encoded = true
    def headers
    byte[] body
}

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

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网关中使用Lambda Proxying,因此将完整的请求对象传递给函数。

唯一的另一个变化是在AWS API Gateway中将'* / *'设置为二进制文件,这对我的用例来说很好。

答案 1 :(得分:0)

您是否尝试过使用@Produces