AWS API Gateway MockIntegration 不接受 Content-Type `application/vnd.nasa.cmr.umm+json;version=1.6.3`
AWS API Gateway MockIntegration does not accept Content-Type `application/vnd.nasa.cmr.umm+json;version=1.6.3`
我目前正在尝试使用 python AWS CDK 创建模拟集成,以便在应用程序中进行 运行 集成测试。
此应用需要查询外部 API 以验证负载。端点需要一个 Content-Type application/vnd.nasa.cmr.umm+json;version=1.6.3
。现在,我希望 MockIntegration
总是 return 一个 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
},
}
],
)
不幸的是请求生成网关returns:
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,return预期结果(状态代码 200,空响应)。这让我想知道问题是否可能在于使用 Content-Type 设置 ;version=1.6.3
?
如有任何帮助,我们将不胜感激!
经过一些进一步的实验,我能够通过在 request_template(没有版本)中使用 application/vnd.nasa.cmr.umm+json
来解决这个问题。当那是 request_template 内容类型时,任何 application/vnd.nasa.cmr.umm+json;version=XXX
匹配并触发正确的模拟集成!
我目前正在尝试使用 python AWS CDK 创建模拟集成,以便在应用程序中进行 运行 集成测试。
此应用需要查询外部 API 以验证负载。端点需要一个 Content-Type application/vnd.nasa.cmr.umm+json;version=1.6.3
。现在,我希望 MockIntegration
总是 return 一个 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
},
}
],
)
不幸的是请求生成网关returns:
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,return预期结果(状态代码 200,空响应)。这让我想知道问题是否可能在于使用 Content-Type 设置 ;version=1.6.3
?
如有任何帮助,我们将不胜感激!
经过一些进一步的实验,我能够通过在 request_template(没有版本)中使用 application/vnd.nasa.cmr.umm+json
来解决这个问题。当那是 request_template 内容类型时,任何 application/vnd.nasa.cmr.umm+json;version=XXX
匹配并触发正确的模拟集成!