У меня есть некоторые трудности с проверкой OAS3 (swagger). Я пытаюсь создать проект, который использует AWS API-шлюз, определенный в файле swagger. В этом проекте пользователи могут загружать документы. Перед сохранением входящего документа мне нужно выполнить некоторую проверку в зависимости от значения параметра тела запроса documentType . Есть ли возможность в OAS для проверки динамической схемы? У меня есть запрос как это:
Запрос пользователя:
POST: documents/
с таким телом запроса:
{
"key1":"value1",
"key2":"value2",
"documentType":"x",
"data":{
"foo":"valueA",
"bar":"valueB"
}
}
Проблематика
Мне нужно определить валидацию для объекта данных в зависимости от заданного значения documentType. Допустим, documentType равен x, поэтому мне нужно проверить объект данных по схеме x. Если documentType равен y, проверьте его по схеме y и т. Д. Мне также нужно обрабатывать ситуацию по умолчанию, когда данный documentType не имеет своего валидатора. В этом случае я хочу вернуть ошибку неверного запроса. Может ли ОАГ этого добиться? Если да, то как?
Возможное решение
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
Это моя идея, как это может работать, но мне это не нравится. Я вижу проблемы, когда тело запроса становится большим, даже если это решение можно упростить с помощью ссылок. Я надеюсь, что есть ясное решение, но все еще не в моем понимании.