gpt4 book ai didi

amazon-web-services - 从 AWS API Gateway 请求验证器获取详细的错误消息

转载 作者:行者123 更新时间:2023-12-03 12:13:37 33 4
gpt4 key购买 nike

背景

我有一个使用 Swagger 2.0 定义创建的 API 网关 API Gateway extensions .

我覆盖了默认的 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上面的payload来自 API Gateway variables .

我的 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

request validator extensions :
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"
}
}

但是,当我在没有 date 的情况下通过 API Gateway 控制台对其进行测试时属性(property):
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 映射,但到目前为止我还没有能够做到。

最佳答案

更新:
这现在可以通过网关响应实现。设置 BAD_REQUEST_BODY 使用以下模板的网关响应:

{"message": "$context.error.validationErrorString"}

(API 网关上的开发人员)
不幸的是,目前不支持此功能。我们正在积极致力于解决这个问题,但我不能给你任何具体的时间表,什么时候可以得到支持。

关于amazon-web-services - 从 AWS API Gateway 请求验证器获取详细的错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47953570/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com