【问题标题】:AWS API Gateway MockIntegration does not accept Content-Type `application/vnd.nasa.cmr.umm+json;version=1.6.3`AWS API Gateway MockIntegration 不接受 Content-Type `application/vnd.nasa.cmr.umm+json;version=1.6.3`
【发布时间】:2021-10-30 01:27:33
【问题描述】:

我目前正在尝试使用 python AWS CDK 创建一个模拟集成,以便在应用程序中运行集成测试。

此应用需要查询外部 API 以验证有效负载。端点需要一个 Content-Type application/vnd.nasa.cmr.umm+json;version=1.6.3。目前,我希望 MockIntegration 始终返回 200 状态代码和空响应。

这是我尝试过的:

from aws_cdk import aws_apigateway

cmr_api = aws_apigateway.RestApi(
    self, f"integration-test-cmr-api-try",
)

aws_apigateway.Resource(
    self, "mock-cmr-validation", parent=cmr_api.root, path_part="ingest"
).add_resource(
    "validate"
).add_method(
    http_method="POST",
    integration=aws_apigateway.MockIntegration(
                request_templates={
                    "application/vnd.nasa.cmr.umm+json;version=1.6.3":  json.dumps({"statusCode": 200})},
                integration_responses=[
                    {
                        "statusCode": "200",
                        "responseTemplates": {"application/json": json.dumps({})},
                    }
                ],
    ),
    method_responses=[
        {
            "statusCode": "200",
            "responseModels": {
                "application/json": aws_apigateway.Model.EMPTY_MODEL
            },
        }
    ],

)

不幸的是,对生成的网关的请求返回:

curl --request POST 'https://trfjg7ckha.execute-api.us-east-1.amazonaws.com/prod/ingest/validate' \
--header 'Content-Type: application/vnd.nasa.cmr.umm+json;version=1.6.3' \
--data-raw '{}'

状态码 500,{"message": "Internal server error"}

仅将application/json(甚至application/vnd.nasa.cmr.umm+json)设置为MockIntegration.request_templates 中的键,并将其用作请求中的Content-Type,返回预期结果(状态码200,空响应)。这让我想知道问题是否可能在于使用 Content-Type 设置 ;version=1.6.3

任何帮助将不胜感激!

【问题讨论】:

    标签: amazon-web-services aws-api-gateway aws-cdk


    【解决方案1】:

    经过一些进一步的实验,我能够通过在 request_template 中使用application/vnd.nasa.cmr.umm+json(没有版本)来解决这个问题。当那是 request_template 内容类型时,任何 application/vnd.nasa.cmr.umm+json;version=XXX 匹配并触发正确的模拟集成!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-06
      • 2018-08-28
      • 2016-02-25
      • 2018-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-23
      相关资源
      最近更新 更多