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

时间:2020-05-30 20:28:25

标签: 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=}

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

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

我们假设它将调用默认路径,但不会

message: "Missing Authentication Token"

但是当我们这样做

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

api集成被调用

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

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

1 个答案:

答案 0 :(得分:1)

似乎您没有正确设置API网关HTTP API路由,导致路由不起作用as expected。还想提及 HTTP API REST API API Gateway APIs的不同类型,因此请确认您已正确配置API。

作为路由示例,下面是API的路由的外观:

HTTP API routes

  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网关会选择一条路线。 API网关使用以下优先级来选择最匹配的路由:

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

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

编辑

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

Create $default route