【问题标题】:How to configure $default path in AWS API gateway?如何在 AWS API 网关中配置 $default 路径?
【发布时间】:2020-09-18 08:11:01
【问题描述】:

我们正在尝试根据https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-routes.html利用 AWS API 网关中的 $default 路径

像这样利用 $default 作为路由之一配置的 api 网关

/
 /-default
   ANY
 /api
  /{proxy=}

当我们试图在 $default 路径和 GET 调用上调用 api 网关时

https://apigateway.amazonaws.com/prod/test

我们假设它会调用默认路径,但它没有

message: "Missing Authentication Token"

但是当我们这样做时

https://apigateway.amazonaws.com/prod/api/test 

调用api集成

注意:我们已经尝试配置 greedy path{proxy+} 而不是 $default 不起作用,因为贪婪路径总是优先并且 /api 路由也被路由贪婪的路径

社区为我们指明正确方向的任何帮助都会有很大帮助

【问题讨论】:

  • 我不确定,我认为顺序很重要。 default 不应该是最后一个吗?
  • @Marcin 我认为顺序并不重要,即使我在 /api 之后创建了默认值 ..它是在之前添加的
  • @user2359997 您似乎没有正确创建$default 路径。在为 HTTP API 创建路由时,您必须将 $default 指定为 path(在这种情况下无法更改该方法)。我对此进行了测试,它的工作原理与here 记录的完全相同。你能确认一下吗?

标签: amazon-web-services aws-api-gateway api-gateway amazon-api-gateway


【解决方案1】:

您似乎没有正确设置 API Gateway HTTP API 路由,导致路由无法正常工作as expected。还要提一下 HTTP APIsREST APIsAPI Gateway APIs 的不同类型,因此请确认您已正确配置 API。

关于路由的工作原理,作为示例,API 的 路由 的外观如下:

  1. GET https://xxxx.execute-api.xxxx.amazonaws.com/prod/test 的请求:路由到 $default 路径

  2. GET https://xxxx.execute-api.xxxx.amazonaws.com/prod/api/test 的请求:路由到 /api/{proxy+} 路径


此外,如果您在ANY /{proxy+} 有一条贪婪路径,那么正如您所提到的,这条贪婪路径将优先于$default 路径。但是,如果请求与路由匹配,这不会优先于 ANY /api 路由,例如: GET https://xxxx.execute-api.xxxx.amazonaws.com/prod/api :将被路由到 /api 路径而不是 /{proxy+}

路由优先级也有说明here

选择一个阶段后,API Gateway 会选择一个路由。 API Gateway 使用以下优先级选择具有最具体匹配的路由:

  1. 路线和方法完全匹配。
  2. 使用贪婪路径变量 ({proxy+}) 匹配路由和方法。
  3. $default 路由。

如果没有路由匹配请求,API Gateway 将{"message":"Not Found"} 返回给客户端。

编辑

要创建$default路由,只需在创建路由时指定路径为$default

【讨论】:

  • 感谢您的回答能否告诉我们如何配置默认路径?如果可能的话,用屏幕截图....
  • @user2359997 更新了我的答案,包括,很简单,真的没什么。
猜你喜欢
  • 2021-05-04
  • 2020-09-17
  • 2023-03-13
  • 1970-01-01
  • 2022-10-16
  • 2021-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多