如果内容类型不是json api网关,则不进行验证,仅通过验证。我正在使用代理集成,因此没有映射模板,只能使用“ when_no_match”。我正在使用内联招摇。
我可以检查标题是否存在,但不能检查值-我该怎么做?
/myMethod:
post:
x-amazon-apigateway-request-validator : "myvalidator"
parameters:
# How do I also validate Content-Type value is "application/json"
- name: Content-Type
in: header
required: true
我希望API网关对此进行验证,因此我不必在代码中对其进行检查
答案 0 :(得分:0)
转到端点的Integration Request
选项卡,单击Mapping Templates
,将Request body passthrough
设置为never
,为application/javascript
添加映射模板,然后单击{ {1}旁边的下拉菜单中的{1}}。
这是招摇的摘要:
Method Request Passthrough
答案 1 :(得分:0)
由于我自己也在很长一段时间后也在寻找答案,因此我发现涉及swagger / openapi规范文件的唯一解决方案是使用此映射模板(这是我能想到的最短的模板):
#set($allParams = $input.params())
{
"body" : $input.json('$'),
#set($pathParams = $allParams.get('path'))
"pathParameters" : {
#foreach($paramName in $pathParams.keySet())
"$paramName" : "$util.escapeJavaScript($pathParams.get($paramName))"
#if($foreach.hasNext),#end
#end
},
#set($queryParams = $allParams.get('querystring'))
"queryString" : {
#foreach($paramName in $queryParams.keySet())
"$paramName" : "$util.escapeJavaScript($queryParams.get($paramName))"
#if($foreach.hasNext),#end
#end
}
}
在我们要应用于的规范路径中:
paths:
/your-path:
x-amazon-apigateway-integration:
credentials: "arn:aws:iam::xxx:role/yyy"
uri: "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:zzz:function:qqq/invocations"
responses:
default:
statusCode: 200
passthroughBehavior: never
httpMethod: POST
requestTemplates:
application/json: "#set($allParams = $input.params())\n {\n \
\ \"body\" : $input.json('$'),\n #set($pathParams = $allParams.get('path'))\n\
\ \"pathParameters\" : {\n #foreach($paramName\
\ in $pathParams.keySet())\n \"$paramName\" : \"$util.escapeJavaScript($pathParams.get($paramName))\"\
\n #if($foreach.hasNext),#end\n #end\n\
\ },\n #set($queryParams = $allParams.get('querystring'))\n\
\ \"queryString\" : {\n #foreach($paramName\
\ in $queryParams.keySet())\n \"$paramName\" : \"$util.escapeJavaScript($queryParams.get($paramName))\"\
\n #if($foreach.hasNext),#end\n #end\n\
\ }\n }"
type: aws
不幸的是,这对我来说太笨拙了,我决定使用标准的Proxy Integration,并将请求验证设置为所有人:
x-amazon-apigateway-request-validators: {
all: {
validateRequestBody: true,
validateRequestParameters: true
}
}
x-amazon-apigateway-request-validator: all