4

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

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

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

提前谢谢了。

4

2 回答 2

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 Gateway 中使用 Lambda 代理,因此完整的请求对象被传递给函数。

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

于 2018-05-28T09:48:50.857 回答
0

您是否尝试过@Produces

于 2018-05-25T15:13:23.227 回答