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

How to configure $default path in AWS API gateway?

我们正在尝试根据 https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-routes.html

在 AWS API 网关中利用 $default 路径

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

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

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

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

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

message: "Missing Authentication Token"

但是当我们这样做时

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

调用 api 集成

注意 :我们已经尝试配置 greedy path{proxy+} 而不是 $default 因为贪婪路径总是需要优先级和 /api 路由也被路由到贪婪路径

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

您似乎没有正确设置 API 网关 HTTP API 路由,导致路由无法正常工作 as expected. Would also like to mention that HTTP APIs and REST APIs are different types of API 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

After selecting a stage, API Gateway selects a route. API Gateway selects the route with the most-specific match, using the following priorities:

  1. Full match for a route and method.
  2. Match for a route and method with a greedy path variable ({proxy+}).
  3. The $default route.

If no routes match a request, API Gateway returns {"message":"Not Found"} to the client.

编辑

要创建$default路由,创建路由时指定路径为$default即可