我不确定这是Micronaut还是AWS Gateway问题。任何帮助都会很棒。
我正在尝试使用Micronaut框架创建一个Lambda函数,该函数通过AWS API网关返回pdf。这支持吗?返回二进制内容需要更改什么?我已经尝试将方法的返回类型更改为byte [],但看起来Content-Type始终是application / json。
作为一个上下文,我希望使用Groovy来编写函数,使用Dynamic Reports来使用DynamoDB中的数据创建PDF。
非常感谢提前。
答案 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?