小编cas*_*tle的帖子

如何使用 micronaut-function-aws-api-proxy 处理多部分/表单数据文件上传

我正在 AWS API Gateway 代理中使用micronaut 1.1.0.RC2Kotlin micronaut-function-aws-api-proxy 1.1.0.RC3Lambda 函数。micronaut aws api 代理适用于我的所有 API 函数(文件上传路由除外)。类和路由定义如下所示:

@Controller("/things/{id}/attachments")
class AttachmentController {
    @Post(consumes = [MediaType.MULTIPART_FORM_DATA])
    fun post(request: HttpRequest<Any>, id: Int, file: CompletedFileUpload): Attachment? {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

在本地运行,效果很好。但是,当我通过 API Gateway 和 Lambda 使用它时,我不断收到以下错误:

ERROR c.a.s.p.AwsProxyExceptionHandler Called exception handler for:
io.micronaut.web.router.exceptions.UnsatisfiedRouteException: Required argument [CompletedFileUpload file] not specified
at io.micronaut.web.router.AbstractRouteMatch.execute(AbstractRouteMatch.java:279)
at io.micronaut.web.router.RouteMatch.execute(RouteMatch.java:122)
...
Run Code Online (Sandbox Code Playgroud)

同样,如果我在本地运行 micronaut 应用程序并直接访问 API(没有 micronaut AWS 代理),它就能完美运行。但是,当我将其部署到 AWS 时,micronaut aws 代理似乎存在问题,无法正确解析多部分表单数据。

我确实已multipart/form-data在 API 网关上设置为二进制媒体类型。我尝试使用micronaut 主要文档(https://docs.micronaut.io/1.1.0.RC2/guide/index.htmlCompletedFileUpload )中描述的类型和类型,得到相同的结果。 …

aws-lambda aws-api-gateway micronaut micronaut-aws

5
推荐指数
0
解决办法
1729
查看次数