Piszę API REST i natknąłem się na problem. Jaki jest najlepszy sposób zwracania błędów sprawdzania poprawności.REST kody błędów powrotu funkcji API
Do tej pory byłem powrocie komunikaty o błędach po cenach dumpingowych na kod ogólny błąd (powiedzmy złe żądanie przykład)
{
"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\""
]
}
)
ja zbadali trochę więcej o tym, jak powinien dobrą odpowiedzią API powinien wyglądać i pomyślałem z następujących opcji:
zatrzymują się na pierwszym napotkanego błędu i zwróci odpowiedź z konkretnym kodem błędu
{ "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" } )
Parse wszystkie dane żądania i zwracać wiele błędów sprawdzania poprawności pola.
{ "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" } } } }
Moim zdaniem opcja 2 byłaby właściwa droga (to daje więcej przydatnych informacji dla programistów/użytkowników końcowych i obciążenie serwera może być niższa (mniej wnioski/nie potrzeba revalidate poprawnych danych/nie trzeba obliczyć podpisu i uwierzytelnić użytkownika)), ale błądzę, jakie są najlepsze praktyki, a jeśli istnieje inny sposób leczenia tego rodzaju problemów.
Także myślę, że opcja 1 jest nadal ważna, jeśli ja dostać jeden poważny błąd w przepływie skryptu. (Nie błędy walidacji)
Należy pamiętać, że kod jest tylko prosta tablica tak jest łatwiej podążać. Format odpowiedzi to JSON lub XML.
Chciałbym wiedzieć, czy ktokolwiek przeszedł # 2 i może mieć jakieś ulepszenia, więc otworzyłem nagrodę. – Ski
Do czego służy ten interfejs API i jaki byłby cel komunikatów o błędach? Czy te wiadomości będą wyświetlane użytkownikowi końcowemu, czy nie? Ile żądań oczekuje na sekundę/minutę/dzień? Odpowiedź na twoje pytanie nie może być dokładna bez tych informacji. Nie masz odpowiedzi, ponieważ pytanie jest zbyt szerokie, to naprawdę zależy od użycia API. – skobaljic