Я пытаюсь задокументировать конечную точку API, используя swagger-php v2.0 , но документация по swagger сгенерирована неправильно.
Мой вариант использования заключается в том, что мне нужно принимать 2 разных полезных нагрузки с одной и той же конечной точки, и некоторые ключи могут присутствовать только в данном контексте.
Что касается официальной документации, это может быть достигнуто с помощью discriminator
вместе с allOf
и , это пример , приведенный в спецификации OpenAPI (Swagger).
Для ясности я выложу уменьшенную версию здесь
{
"definitions": {
"FooBar": {
"type": "object",
"discriminator": "type",
"properties": {
"name": {
"type": "string"
},
"type": {
"type": "string"
}
},
"required": [
"name",
"type"
]
},
"foo": {
"allOf": [
{
"$ref": "#/definitions/FooBar"
},
{
"type": "object",
"properties": {
"unique_to_foo_field": {
"type": "string",
}
},
"required": [
"unique_to_foo_field"
]
}
]
},
"bar": {
"allOf": [
{
"$ref": "#/definitions/FooBar"
},
{
"type": "object",
"properties": {
"unique_to_bar_field": {
"type": "string",
}
},
"required": [
"unique_to_bar_field"
]
}
]
}
}
}
И я хочу преобразовать это для swagger-php, и тот, который я придумал, выглядит следующим образом, но, похоже, это не правильно. Я прошу совета, чтобы исправить это, спасибо.
/**
* @SWG\Definition(
* definition="model:FooBar",
* type="object",
* discriminator="type",
* required={"type", "name"},
* @SWG\Property(property="type", type="string"),
* @SWG\Property(property="name", type="string"),
* )
*
* @SWG\Definition(
* definition="model:foo",
* allOf={
* @SWG\Schema(ref="#/definitions/model:FooBar"),
* @SWG\Schema(
* required={"unique_to_foo_field"},
* type="object",
* @SWG\Property(property="unique_to_foo_field", type="integer")
* )
* }
* )
*
* @SWG\Definition(
* definition="model:bar",
* allOf={
* @SWG\Schema(ref="#/definitions/model:FooBar"),
* @SWG\Schema(
* required={"unique_to_bar_field"},
* type="object",
* @SWG\Property(property="unique_to_foo_field", type="integer")
* )
* }
* )
*/