У меня есть API, который либо возвращает следующий ответ на успех:
{
"result": "success",
"filename": "my-filename.txt"
}
или что-то вроде ниже при сбое:
{
"result": "error",
"message": "You must specify the xxx parameter."
}
Свойство filename указывается только в том случае, если запрос был успешным, но сообщение предоставляется, если произошла ошибка. Это означает, что сообщение и свойства имени файла являются "необязательными", но требуется свойство результата.
Я попытался определить этот объект ответа в определении, как показано ниже:
"my_response_object": {
"type": "object",
"properties": {
"result": {
"type": "string",
"description": "value of 'success' or 'error', indicated whether was successful",
"required": true
},
"message": {
"type": "string",
"description": "an error message if there was an issue",
"required": false
},
"filename": {
"type": "string",
"description": "the filename to return if the request was successful",
"required": false
}
}
}
Но кажется, что swagger не нравится атрибут "required" и отображает следующее сообщение об ошибке:
Когда я смотрю пример с swagger, у них есть следующий макет, в котором вместо одного есть два разных определения ответа.
"responses": {
"200": {
"description": "Profile information for a user",
"schema": {
"$ref": "#/definitions/Profile"
}
},
"default": {
"description": "Unexpected error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
Я мог бы это сделать, но, похоже, не может быть нескольких ответов для кода ошибки 200. Означает ли это, что нужно использовать "по умолчанию" для всех ответов об ошибках, и для всех ошибочных ответов может быть только одна структура, или есть способ указать, что определенные атрибуты являются необязательными в определениях?