我在OAS3(摇摇欲坠)验证方面遇到一些困难。我正在尝试建立使用由swagger文件定义的AWS API网关的项目。在该项目中,用户可以上传文档。在存储传入文档之前,我需要根据请求正文参数 documentType 的值进行一些验证。 OAS中是否有可能进行动态模式验证?我有这样的要求:
POST: documents/
具有这样的请求正文:
{
"key1":"value1",
"key2":"value2",
"documentType":"x",
"data":{
"foo":"valueA",
"bar":"valueB"
}
}
我需要根据给定的documentType值为数据对象定义摇摇欲坠的验证。可以说documentType是x,所以我需要根据模式x验证数据对象。如果documentType为y,则根据模式y对其进行验证,依此类推。当给定documentType没有其验证器时,我还需要处理默认情况。在这种情况下,我想返回错误的请求错误。 OAS能做到这一点吗?如果可以,怎么办?
paths:
/documents:
post:
requestBody:
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/DocType1'
- $ref: '#/components/schemas/DocType2'
responses:
'200':
description: Updated
components:
schemas:
DocType1:
type: object
properties:
key1:
type: string
key2:
type: string
documentType:
type: string
enum: [x]
data:
properties:
foo:
type: string
bar:
type: string
DocType2:
type: object
properties:
key1:
type: string
key2:
type: string
documentType:
type: string
enum: [y]
data:
properties:
baz:
type: string
qux:
type: string
这是我的想法,它如何工作,但我不喜欢它。我看到当请求主体变大时出现问题,即使可以通过引用简化此解决方案。我希望有一个明确的解决方案,但仍然无法解决。