Pracuję nad projektem i po kłótni z ludźmi w pracy przez ponad godzinę. Postanowiłem wiedzieć, co mogą powiedzieć ludzie korzystający z wymiany stosów.
Piszemy API dla systemu, istnieje zapytanie, które powinno zwrócić drzewo Organizacji lub drzewo Celów.
Drzewo Organizacji to organizacja, w której użytkownik jest obecny. Innymi słowy, drzewo to powinno zawsze istnieć. W organizacji drzewo celów powinno być zawsze obecne. (od tego zaczął się argument). W przypadku, gdy drzewo nie istnieje, mój współpracownik zdecydował, że dobrze będzie odpowiedzieć na kod stanu 200. A potem zaczął prosić mnie o naprawienie mojego kodu, ponieważ aplikacja się rozpadała, gdy nie było drzewa.
Spróbuję oszczędzić płomieni i furii.
Zasugerowałem podniesienie błędu 404, gdy nie ma drzewa. To przynajmniej dałoby mi znać, że coś jest nie tak. Korzystając z 200, muszę dodać specjalne sprawdzenie do mojej odpowiedzi w wywołaniu zwrotnym powodzenia, aby obsłużyć błędy. Oczekuję, że otrzymam obiekt, ale mogę otrzymać pustą odpowiedź, ponieważ nic nie zostanie znalezione. Oznaczenie odpowiedzi jako 404 wydaje się całkowicie uczciwe. A potem wybuchła wojna i dostałem wiadomość, że nie rozumiem schematu kodu statusu HTTP. Więc jestem tutaj i pytam, co jest nie tak z 404 w tym przypadku? Dostałem nawet argument „Nic nie znalazłem , więc dobrze jest zwrócić 200”. Uważam, że to źle, ponieważ drzewo powinno być zawsze obecne. Jeśli nic nie znaleźliśmy i czegoś oczekujemy, powinno to być 404.
Więcej informacji,
Zapomniałem dodać pobrane adresy URL.
Organizacje
/OrgTree/Get
Cele
/GoalTree/GetByDate?versionDate=...
/GoalTree/GetById?versionId=...
Mój błąd, oba parametry są wymagane. Jeśli podana jest jakakolwiek wersjaData, którą można przeanalizować z datą, zwróci poprawkę zamknięcia. Jeśli wpiszesz coś w przeszłości, zwróci pierwszą wersję. Jeśli przez Id z identyfikatorem, który nie istnieje, podejrzewam, że zwróci pustą odpowiedź z 200.
Dodatkowy
Ponadto uważam, że najlepszą odpowiedzią na problem jest tworzenie domyślnych obiektów podczas tworzenia organizacji, brak drzewa nie powinien być prawidłowym przypadkiem i powinien być postrzegany jako zachowanie niezdefiniowane. Nie ma możliwości korzystania z konta bez obu drzew. Z tych powodów powinni być zawsze obecni.
też połączyłem to (jeden podobny, ale nie mogę go znaleźć)
http://viswaug.files.wordpress.com/2008/11/http-headers-status1.png
/GoalTree/GetById?versionId=CompletelyInvalidID
zwrócić? Niepowodzenie, ponieważ wymieniony zasób /GoalTree/GetById?versionId=CompletelyInvalidID
dosłownie nie został znaleziony.