我在API Gateway swagger文件(OAS 3.0)中添加了一个请求验证器。当我通过传入一个无效的请求体来测试验证时,我收到的错误消息包括我不理解的错误。复制步骤如下。
openapi: 3.0.0
info:
version: "1"
title: Request Validation Example
description: |
## Request Validation
Minimal swagger to reproduce request validation errors.
x-amazon-apigateway-request-validators:
all:
validateRequestBody: true
validateRequestParameters: true
x-amazon-apigateway-gateway-responses:
BAD_REQUEST_BODY:
statusCode: 400
responseTemplates:
application/json: |
{
message: $context.error.messageString
errors: $context.error.validationErrorString
}
paths:
/employee:
post:
x-amazon-apigateway-request-validator: all
summary: Create a new Employee
operationId: CreateEmployee
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Employee"
required: true
responses:
"201":
description: Created
$ref: "#/components/responses/200"
components:
responses:
"200":
description: Success
schemas:
Employee:
type: object
properties:
id:
type: integer
format: int32
phoneNumbers:
type: array
items:
$ref: "#/components/schemas/PhoneNumber"
salary:
type: number
format: double
required:
- phoneNumbers
- salary
PhoneNumber:
type: object
properties:
number:
type: string
required:
- number
为新创建的员工资源设置集成方法,选择模拟集成。
使用以下请求正文测试员工发布方法:
{
"id": 1,
"phoneNumbers": [
{
"number": "1234567890"
}
],
"salary": 45000
}
此请求主体的请求验证将成功
{
"id": "1",
"phoneNumbers": [
{
"number": "1234567890"
}
],
"salary": 45000
}
您现在将看到以下请求验证错误:
{
message: "Invalid request body"
errors: [instance type (string) does not match any allowed primitive type (allowed: [\"integer\"]), format attribute \"double\" not supported, format attribute \"int32\" not supported]
}
您可以看到此消息包含正确的错误,指出字符串id与整数类型不匹配。您还会看到格式属性Double和int32不支持的错误,这些是我不理解的错误。据我所知,OAS 2.0和3.0支持Double和int32格式属性。API网关请求验证器支持Double和int32格式属性吗?在我的swagger定义中,请求验证器配置不正确吗?
编辑:看来int32和双格式属性是已知问题:https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-known-issues.html#api-RESTAPI的网关已知问题
然而,我在format属性中使用正则表达式时也遇到了这些问题。这在已知问题中没有特别提到,所以仍在寻找这方面的信息。
我认为需要注意的是,OAS文档中定义的模型应该是JSONSchema,而不一定是OpenAPI。它们在运行时被验证为JSONSchema Draft 4,该规范中不包含< code>format属性。
有时令人困惑的是<code>导入<code>操作。当使用OpenAPI定义API并导入API时,API网关将解析模型OAS规范和JSONSchema草案4的交集。
如果您需要JSONSchema的属性,而该属性未包含在OpenAPI的Schema规范中(例如type:[…, null]
),则直接创建或更新API网关::模型是一种解决方法。
我们使用JSch库(JSch-0.1.55.jar)与SFTP服务器(Bitvise)建立连接。 我们正在使用PPK2私钥格式,它的工作与提到的SFTP服务器很好。但是,当使用PPK3私钥格式时,它不能与同一服务器一起工作。 JSch库(jsch-0.1.55.jar)是否支持PPK3格式? 有人可以帮助这篇文章或任何解决问题的方法吗?
问题内容: 我搜索了Google,发现了一些矛盾之处。xlwt是否支持xlsx文件(MS Office 2007)。我听说xlwt 0.7.4支持xlsx文件。有谁尝试过使用xlwt 0.7.4编写xlsx文件 这个问题的目的是,如果我需要安装,我没有安装库的权限,我需要提供更多详细信息。我需要用python编写xlsx文件,所以如果有人做过类似的事情将有助于提供更好的信息 我已经查看了这个Wik
我正在考虑使用Postman来自动化我对REST API的测试,并且只使用了几天。到目前为止,我已经为我的初始集合创建了足够数量的请求。我还在请求前脚本、测试和请求正文中使用了全局、环境和集合变量。我希望控制请求中包含哪些属性,而无需复制同一请求的多个副本以排除某些属性。 例如,我有一个 JSON 请求正文,如下所示: 如果“OtherProperty”为空或为空,我想从请求中完全删除该属性。我只
nosql数据库具有无模式属性,因此我们可以向节点或关系添加任何字段/属性。但是如果我使用Spring数据作为框架,我必须预先定义节点和关系对象的字段。Spring数据Neo4j似乎不支持动态插入字段...是真的吗?
当我使用postman时,谷歌似乎没有验证我的请求主体架构,甚至没有验证请求有主体。我错过了什么吗?对我来说,这意味着谷歌在调用x-google-backend之前会验证此类事情,但它总是将请求传递给我的云函数,无论我是否传递有效数据。 我用这个问题作为指导。 user.yaml:
我在服务器端有几个问题。 我有50多个API。 需要检查每一个API(GET, POST)方法下面的东西。 验证输入是否为有效的json 例如1: 在上面的输入中,我需要检查几个关键字是手动的。例如:名称、代码 例2: 在上面的例子中,我需要检查州和城市 我检查了包裹,但没有找到适合我的。 是否有用于检查json验证的包?