【发布时间】: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