Tôi có một API mà một trong hai trả về phản ứng sau đây về thành công:Swagger - Xác định tài sản đối tượng bắt buộc hoặc Nhiều Responses
{
"result": "success",
"filename": "my-filename.txt"
}
hoặc một cái gì đó giống như dưới đây khi thất bại:
{
"result": "error",
"message": "You must specify the xxx parameter."
}
Thuộc tính filename là chỉ được chỉ định nếu yêu cầu thành công, nhưng một thông báo được cung cấp nếu có lỗi. Điều này có nghĩa là thông báo và các thuộc tính tên tệp là "tùy chọn" nhưng yêu cầu thuộc tính kết quả.
tôi đã cố gắng xác định đối tượng phản ứng này trong một định nghĩa như hình dưới đây:
"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
}
}
}
Nhưng nó xuất hiện vênh vang mà không thích "yêu cầu" thuộc tính và sẽ hiển thị thông báo lỗi sau:
Khi tôi xem ví dụ từ việc vênh vang, chúng có bố cục sau đây, trong đó có hai định nghĩa phản hồi khác nhau thay vì một.
"responses": {
"200": {
"description": "Profile information for a user",
"schema": {
"$ref": "#/definitions/Profile"
}
},
"default": {
"description": "Unexpected error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
Tôi có thể làm điều này, nhưng có vẻ như không thể có nhiều câu trả lời cho mã lỗi 200. Điều này có nghĩa là người ta phải sử dụng "mặc định" cho tất cả các phản hồi lỗi, và người ta chỉ có thể có một cấu trúc duy nhất cho tất cả các câu trả lời sai, hoặc có cách nào để xác định rằng các thuộc tính nhất định là tùy chọn trong định nghĩa?
Cũng giống như một lưu ý, cụm từ "nhiều câu trả lời cho mã lỗi 200" nghe có vẻ giống cá. Tại sao bạn trả lại lỗi dưới dạng 2XX? – Tommy