Tôi đang viết một API REST và tôi đã tình cờ gặp một vấn đề. Cách tốt nhất để trả lại các lỗi xác thực là gì.Cấu trúc trả về mã lỗi REST API
Cho đến bây giờ tôi đã trả lại thông báo lỗi đổ vào một mã lỗi chung (giả sử yêu cầu xấu ví dụ)
{
"status": 400,
"error": {
"code": 1, // General bad request code
"message": [
"The Key \"a\" is missing",
"The Key \"b\" is missing",
"The Key \"c\" is missing",
"Incorrect Format for field \"y\""
]
}
)
Tôi đã nghiên cứu thêm một chút về cách nên một phản ứng API tốt nên trông giống như và tôi nghĩ các tùy chọn sau:
Dừng tại các lỗi gặp phải đầu tiên và trả về một phản ứng với mã lỗi cụ thể
{ "status": 400, //Same as the HTTP header returned "error" { "code": 1, // Specific field validation error code "message": "Field \"x\" is missing from the array structure", "developer_message": "The request structure must contain the following fields {a,b,c{x,y,z}}", "more_info" => "www.api.com/help/errors/1" } )
Phân tích cú pháp tất cả dữ liệu yêu cầu và trả về nhiều lỗi xác thực trường.
{ "status": 400, "error": { "code": 1 //General bad Request code "message": "Bad Request", "developer_message": "Field validation errors." "more_info": "www.api.com/help/errors/1", "error_details": { 0: { "code": 2 // Specific field validation error code "message": "Field \"x\" is missing from the array structure", "developer_message": "The request structure must contain the following fields {a,b,c{x,y,z}}", "more_info": "www.api.com/help/errors/2" }, 1: { "code": 3 // Specific field validation error code "message": "Incorrect Format for field \"y\"", "developer_message": "The field \"y\" must be in the form of \"Y-m-d\"", "more_info": "www.api.com/help/errors/3" } } } }
Trong tùy chọn quan điểm của tôi 2 sẽ là đúng cách (nó cung cấp thông tin hữu ích hơn cho các nhà phát triển/người dùng cuối và tải máy chủ có thể thấp hơn (ít yêu cầu/không cần phải hợp lệ lại dữ liệu hợp lệ/không cần tính toán chữ ký và xác thực người dùng)), nhưng tôi đang lang thang thực hành tốt nhất là gì và nếu có cách khác để xử lý loại vấn đề này.
Ngoài ra tôi nghĩ phương án 1 vẫn còn hợp lệ nếu tôi nhận được một lỗi nghiêm trọng duy nhất trong dòng chảy của kịch bản. (Không lỗi xác nhận)
Xin lưu ý rằng mã chỉ là một mảng đơn giản chỉ cần như vậy sẽ dễ dàng hơn để làm theo. Định dạng phản hồi sẽ là JSON hoặc XML.
Tôi muốn biết nếu có ai đi # 2 và có thể có bất kỳ cải tiến nào về nó để tôi mở một tiền thưởng. – Ski
API này được sử dụng cho mục đích gì và mục đích của thông báo lỗi là gì? Các tin nhắn đó có được hiển thị cho người dùng cuối hay không? Có bao nhiêu yêu cầu mong đợi mỗi giây/phút/ngày? Câu trả lời cho câu hỏi của bạn không thể chính xác nếu không có thông tin đó. Bạn không có câu trả lời vì câu hỏi quá rộng, nó thực sự phụ thuộc vào cách sử dụng API. – skobaljic