Фон
У меня есть API-шлюз, созданный с использованием определений Swagger 2.0 с расширениями API-шлюза.
Я перепробовал ответы API-шлюза по умолчанию, например:
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"
}
}
В приведенной выше полезной нагрузке $context
поступает переменные API-шлюза.
Образец ресурса/метода в моем API выглядит так (всегда LAMBDA_PROXY
):
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
С соответствующим определением полезной нагрузки запроса:
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
И запросить расширения валидатора:
x-amazon-apigateway-request-validator: body
x-amazon-apigateway-request-validators:
body:
validateRequestBody: true
validateRequestParameters: false
Проблема
Когда я вызываю эту конечную точку с отсутствующим или недопустимым date
, я всегда получаю тот же ответ:
{
"error": {
"code": 400,
"stage": "latest",
"request": "6b7a64f5-e7f0-11e7-845b-f53ceb4cb049",
"message": "Invalid request body"
}
}
Однако, когда я тестирую его через консоль API Gateway без свойства date
:
Request body does not match model schema for content type application/json: [
object has missing required properties (["date"])
]
И с недопустимым date
:
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"
]
Вопрос
Как я могу получить доступ к подробному сообщению об ошибке, чтобы я мог обогатить свой ответ об ошибке более подробным сообщением, чем Invalid request body
? Я подозреваю, что это должно быть возможно, возможно, используя x-amazon-apigateway-gateway-responses
, но до сих пор я не смог это сделать.