【问题标题】:Anyone here deployed Micronaut GraphQL API to AWS Lambda successfully?这里有人成功将 Micronaut GraphQL API 部署到 AWS Lambda 吗?
【发布时间】:2020-02-20 15:09:50
【问题描述】:

我根据以下文章创建了一个 GraphQL 端点: http://lifeinide.com/post/2019-04-15-micronaut-graphql-with-transaction-and-security-support/

它在我的本地机器上正常工作,但在通过引用 https://github.com/micronaut-projects/micronaut-aws/tree/master/examples/api-gateway-example 部署到 AWS lambda 之后就不行了。

我用 postman 测试了 Lambda 的 /ping API,它运行良好。 但是,当我将 graphql 查询发布到 /graphql 端点时,它总是返回“415 Unsupported Media Type”。

我认为缺少一些东西,但我不确定它是什么,如果这里有人可以指出如何使它起作用,不胜感激。

谢谢。

【问题讨论】:

  • 您在发布什么内容以及您的请求内容类型是什么?
  • 感谢您的快速回复。我的请求内容类型是“application/json”,我发布以下 json:{ "query":"{ listSignals(page: 0, size: 11) { signals { id date type description } total } }" }
  • 有什么更新吗?谢谢

标签: java aws-lambda graphql micronaut


【解决方案1】:

在深入研究源代码后,我发现 graphQL 后端点的 Consumes 属性设置为 ALL 即 / 以接受任何内容类型,但在代码中它们具体指的是 application/json 或应用程序/graphQL。

当您使用 application/json 访问 graphQL post 端点时,MICRONAUT lambda 处理程序将内容类型与 ALL 匹配,这不是真的,因此它会引发错误 415 Unsupported Media Type。请求永远不会到达 graphQL 控制器。

当您使用 / 访问 graphQL 后端点时,MICRONAUT lambda 处理程序将内容类型与 ALL 匹配,这似乎是正确的,因此它将请求转发到 GraphQL 控制器,但在代码中它特别看起来对于那些特定的内容类型。它再次依赖 .equals 方法进行比较。它再次不匹配,因此抛出 422 无法处理的实体。

我仍在寻找解决方案。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-06-21
  • 2019-10-18
  • 2010-10-31
  • 1970-01-01
  • 2018-12-02
  • 2021-08-05
  • 2016-08-09
  • 1970-01-01
相关资源
最近更新 更多