json - 除了 swagger 中定义的字段之外,避免 json 中的其他字段导致 WSO2 APIM 3.1.0 中的验证失败
问题描述
我们正在尝试通过在 swagger 定义中定义验证条件并在运行时配置下启用模式验证来验证 APIM 3.1.0 中的 json。PFA Swagger 定义。
当除了在 swagger 中定义的字段之外,在请求 json 中传递了其他字段时,验证必须失败,否则网关应该忽略这些额外的字段并且不应该将其传递给后端。但这目前没有发生,如果我们在这里遗漏任何东西,请您建议我们。
示例请求 JSON
注意:在此 JSON 中,“test”字段是在请求中发送的附加参数。
{“applicationId”:“Test123_3211”,“name”:“Bala krishna”,“dateOfBirth”:“1981-04-11”,“gender”:“FEMALE”,“phonenumber”:“ 9039283630”、“altphonenumber”:“9979979971”、“panCard”:“AAAAV1234N”、“nomineeName”:“Ramji Ambedkar”、“nomineeDOB”:“1976-04-14”、“source”:“ONLINE”、“process ": "Canara HSBC", "callDate": "2018-08-24", "callTime": "17:00", "merType": "VIDEOMER", "instantCall": true, "test": "abcd" }</p>
下面是招摇的 API:
swagger: "2.0" info: version: v1.0.0 title: MedicalBookAppointmentAPI description: "此 API 用于预约医疗。\n\n支持的操作:\n\n\t1. Docs APP" 方案:
- https
- http产生:
- application/json 路径:/docs-app: post: summary:此 API 将用于添加案例和安排约会。描述:此 API 将用于添加案例和安排约会。参数:- in:正文名称:有效负载描述:请求正文要求:true 架构:$ref:“#/definitions/docs-app-request”响应:“200”:描述:OK 架构:$ref:“#/definitions /docs-app-response" "400": schema: $ref: "#/definitions/book-appointment-api-error" 描述:错误请求。无效的请求或验证错误。“415”:架构:$ref:“#/definitions/book-appointment-api-error”描述:“不支持的媒体类型。请求的实体采用不支持的格式。” “500”:架构:$ref:“#/definitions/book-appointment-api-error”
book-appointment-api-error:标题:错误对象返回 HTTP 状态类型:对象属性:故障:类型:对象属性:代码:格式:int64 类型:整数类型:类型:字符串消息:描述:错误消息。类型:字符串 描述:描述:有关错误消息的详细描述。类型:字符串要求:-代码-消息
解决方案
您可以在 swagger 文件中使用additionalProperties或minProperties/maxProperties并限制有效负载中的其他属性。
- 如果您知道要限制属性数量,请使用minProperties/maxProperties
- 如果您不知道要限制的属性数量,请使用additionalProperties
有关更多详细信息,请参阅https://m-saranki.medium.com/unboxing-json-schema-validator-320-2dd944dae6c0
推荐阅读
- java - 在 vaadin 10 spring boot 应用程序中放置样式表的位置
- javascript - 重构 pure() 与 React.PureComponent
- c++ - 如何从其他结构访问受保护的结构变量
- java - 插入二叉树问题的方法
- javascript - Match string with 10 or fewer non-whitespace characters in front of string, ignoring whitespace characters
- rvest - Rvest 返回零列表
- c# - 为什么可以将地址添加到 MailMessage.To 使用对象初始化?
- static-analysis - 单个文件上的 Spotbugs?
- swift - 调用localizedNetworkReachabilityStatusString 后的未知状态
- c - 如何将字符串和变量连接到C中的字符串