如何在 AWS API 网关中配置 $default 路径?

use*_*997 1 amazon-web-services aws-api-gateway api-gateway amazon-api-gateway

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

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

/
 /-default
   ANY
 /api
  /{proxy=}
Run Code Online (Sandbox Code Playgroud)

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

https://apigateway.amazonaws.com/prod/test
Run Code Online (Sandbox Code Playgroud)

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

message: "Missing Authentication Token"
Run Code Online (Sandbox Code Playgroud)

但是当我们这样做时

https://apigateway.amazonaws.com/prod/api/test 
Run Code Online (Sandbox Code Playgroud)

API集成时调用

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

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

Par*_*igm 5

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

作为示例,路由将如何工作,API的路由如下所示:

HTTP 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+}

这里也解释路由优先级

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

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

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

编辑

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

创建 $default 路由