我们正在尝试根据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路由也被路由贪婪的路径
社区中向我们指出正确方向的任何帮助都会有很大帮助
答案 0 :(得分:1)
似乎您没有正确设置API网关HTTP API路由,导致路由不起作用as expected。还想提及 HTTP API 和 REST API 是API Gateway APIs的不同类型,因此请确认您已正确配置API。
作为路由示例,下面是API的路由的外观:
获取 GET https://xxxx.execute-api.xxxx.amazonaws.com/prod/test的请求:已路由到$default
路径
获取 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网关使用以下优先级来选择最匹配的路由:
- 完全匹配的路线和方法。
- 匹配具有贪婪路径变量(
{proxy+}
)的路线和方法。$default
路线。如果没有路由与请求匹配,API网关将
{"message":"Not Found"}
返回给客户端。
编辑:
要创建$default
路由,只需在创建路由时将路径指定为$default