AWS API 网关:在集成 uri 中使用资源的动态部分

AWS API Gateway: Use dynamic part of resource in integration uri

我想为 AWS CDK API 网关定义中的集成 uri 重新使用动态资源值。

假设我有两个服务:

服务足球 服务网球 两者都有一个端点“玩家”。

现在我想要一个单一的 api 网关定义,用于足球和网球运动员。我尝试动态定义如下:

endpt = rest_api.root.add_resource(path_part='endpoint')
sport_endpt = endpt.add_resource("{sport}")
players_endpt = sport_endpt.add_resource("players")
    
players_endpt.add_method(
    http_method='GET',
    ...
    integration=apigw.Integration(
        type=_apigw.IntegrationType.HTTP,
        integration_http_method='GET',
        uri=uri + '/service-*HERE_THE_SPORT_PARAM*/players',
    )
)

在集成部分,我想使用动态资源值 {sport} 动态创建 uri 部分,这样我就可以得到类似 /service-football/players 或 /service-tennis/players 的内容,我可以通过以下方式轻松扩展使用相同的约定创建服务端点。

如果您想要单个 API 端点定义,则需要将运动作为路径参数包含在内,因此它类似于 BASE_URI/service/{sport}/players.

对应的cdk为

endpt = rest_api.root.add_resource(path_part='endpoint')
service_endpt = endpt.add_resource(path_part='service')
sport_endpt = service_endpt.add_resource("{sport}")
players_endpt = sport_endpt.add_resource("players")
    
players_endpt.add_method(
    http_method='GET',
    ...
    integration=apigw.Integration(
        type=_apigw.IntegrationType.HTTP,
        integration_http_method='GET',
        uri=uri + '/service/{sport}/players',
    )
)