#laravel #swagger #openapi
#laravel #swagger #openapi
Вопрос:
Я пытаюсь написать документацию OpenAPI для проекта (написанного с помощью Laravel) и борюсь с несколькими точками API.
Один возвращает
{
"active_options": {
"1": {
"name": "name1",
"type": "type1"
},
"2": {
"name": "name2",
"type": "type2"
},
"3": {
"name": "name3",
"type": "type3"
}
},
"server": {
"url": "URL...",
"settings1": "value"
},
"message": "Server settings retrieved."
}
Я изо всех сил пытаюсь написать эту аннотацию с помощью плагина l5-swagger.
The «1», «2», «3» являются необязательными, и любая их комбинация допустима.
Я хотел использовать optionalProperties
, но я не знаю, как объединить их вместе.
Это самое близкое, что я получил:
* @OAResponse(
* response=200,
* description="Settings",
* @OAJsonContent(
* @OAProperty(property="options",
* @OAItems(
* @OAProperty(property="name", type="string"),
* @OAProperty(property="type", type="string")
* )
* ),
* )
* ),
Но образец генерирует это:
{
"options": [
{
"name": "string",
"type": "string"
}
]
}
В котором, очевидно, отсутствует "1":
… часть.
Может быть, лучшим вопросом было бы, как сделать неназванные свойства?
Комментарии:
1. У меня такая же проблема. Документы не очень полные
2. @guergana смотрите мой ответ ниже
Ответ №1:
Это мое решение:
/**
*
* @OASchema(
* schema="ExampleResponse",
* @OAXml(name="ExampleResponse"),
* @OAProperty(property="message", type="string", example="My solution."),
* @OAProperty(property="errors", type="object",
* @OAAdditionalProperties(type="array",
* @OAItems(
* @OAProperty(property="name", type="string"),
* @OAProperty(property="type", type="string")
* )
* )
* ),
* )
*
*/