Ответ 1
Вы получаете ошибку в модели, потому что это не способ определить требуемые свойства.
Правильная форма:
"my_response_object": {
"type": "object",
"required": [ "result" ],
"properties": {
"result": {
"type": "string",
"description": "value of 'success' or 'error', indicated whether was successful"
},
"message": {
"type": "string",
"description": "an error message if there was an issue"
},
"filename": {
"type": "string",
"description": "the filename to return if the request was successful"
}
}
}
Все, что не входит в свойство required
, считается необязательным. Имейте в виду, что это означает, что можно получить как message
, так и filename
.
Затем вы можете использовать эту модель для ответа 200.
Однако - когда дело доходит до дизайна REST API, это нарушает один из наиболее распространенных стандартов. Коды состояния, взятые из протокола HTTP, предназначены для передачи результата операции. 2XX используются для успешных ответов, 4XX для ошибок из-за неправильного ввода пользователя, 5XX для проблем на стороне сервера (3XX предназначены для перенаправления). То, что вы здесь делаете, говорит клиенту - операция прошла успешно, но на самом деле это может быть ошибка.
Если вы все еще можете изменить API, я бы настоятельно рекомендовал сделать это различие с использованием кодов состояния, даже используя тонкие настройки, такие как 200 для успешной операции GET, 201 для успешной работы POST (или создания) и так далее на основе определений здесь - http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html.