2

我们正在尝试根据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集成

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

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

4

1 回答 1

7

您似乎没有正确设置 API Gateway HTTP API 路由,导致路由无法按预期工作。还想提一下,HTTP APIREST API是不同类型的API Gateway API,因此请确认您已正确配置 API。

以路由如何工作为例,以下是 API 路由的外观:

HTTP API 路由

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

  2. 请求获取 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+}

这里也说明了路由优先级

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

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

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

编辑

要创建路由,只需像创建路由时$default一样指定路径$default

创建 $default 路由

于 2020-06-02T17:10:03.607 回答