Receba mensagens de erro detalhadas do AWS API Gateway Request Validator
Eu tenho um API Gateway criado usando as definições do Swagger 2.0 comExtensões do API Gateway.
Substituí as respostas padrão do API Gateway, por exemplo:
x-amazon-apigateway-gateway-responses:
BAD_REQUEST_BODY:
statusCode: 400
responseTemplates:
application/json: |
{
"error": {
"code": 400,
"stage": "$context.stage",
"request": "$context.requestId",
"message": "$context.error.message"
}
}
o$context
na carga útil acima vem deVariáveis do API Gateway.
Um recurso / método de amostra na minha API tem esta aparência (sempreLAMBDA_PROXY
integrações):
paths:
/test:
post:
parameters:
- in: body
name: Test
required: true
schema:
$ref: "#/definitions/Test"
responses:
201:
description: Created
400:
description: Bad Request
401:
description: Unauthorized
403:
description: Forbidden
x-amazon-apigateway-integration:
uri: >-
arn:aws:apigateway:${region}:lambda:path/2015-03-31/functions/${lambda}/invocations
type: aws_proxy
httpMethod: POST
credentials: "${credentials}"
passthroughBehavior: never
Com a definição de carga útil de solicitação correspondente:
definitions:
Test:
type: object
title: Test
required:
- date
properties:
date:
type: string
pattern: "^20[0-9]{2}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$"
description: Date in YYYY-MM-DD Format
E asolicitar extensões do validador:
x-amazon-apigateway-request-validator: body
x-amazon-apigateway-request-validators:
body:
validateRequestBody: true
validateRequestParameters: false
ProblemaQuando ligo para este terminal com uma mensagem ausente ou inválidadate
, Sempre recebo a mesma resposta:
{
"error": {
"code": 400,
"stage": "latest",
"request": "6b7a64f5-e7f0-11e7-845b-f53ceb4cb049",
"message": "Invalid request body"
}
}
No entanto, quando eu o testo através do console do API Gateway sem odate
propriedade:
Request body does not match model schema for content type application/json: [
object has missing required properties (["date"])
]
E com um inválidodate
:
Request body does not match model schema for content type application/json: [
ECMA 262 regex "^20[0-9]{2}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$" does not match input string "2017/12/25"
]
Pergunta, questãoComo posso acessar a mensagem de erro detalhada para enriquecer minha resposta de erro com uma mensagem mais descritiva do queInvalid request body
? Eu suspeito que isso deve ser possível, talvez usandox-amazon-apigateway-gateway-responses
mapeamento, mas até agora não consegui fazer isso.