Oprócz odpowiedzi @ Dherik.
Identyfikatory URI są identyfikatorami , dlatego musimy pamiętać, że ( /a/{id}/b
jest to identyfikator). URI jest bez znaczenia dla WWW, a więc jest dla klienta HTTP.
404 to właściwa odpowiedź . Zasadniczo serwer odpowiada
Nie znalazłem żadnych zasobów o takim identyfikatorze. Nie znaleziono zasobu
1
To, czy brakujący zasób jest nadrzędny czy podrzędny, nie ma znaczenia.
My, programiści, widzimy hierarchie i ścieżki w URI, ale klienci HTTP nie. Innymi słowy, HTTP ma być interpretowany tylko przez klientów HTTP, ale nie przez ludzi (deweloperów, użytkowników końcowych itp.).
W przypadku wątpliwości nie pytaj, jaki kod ma dla ciebie sens (człowiek). Nie pytaj, jaki kod ma sens dla klienta HTTP. Jak chcesz zachowywać się klient HTTP?
Dlaczego? Ponieważ niektóre kody stanu powodują, że klienci wykonują określone operacje. Na przykład 302 . Ten kod zazwyczaj powoduje, że przeglądarki internetowe przekierowują do określonej lokalizacji (URI) informowane w nagłówkach odpowiedzi.
To może nie być twój przypadek, ale ważne jest, aby być świadomym. Ostatecznie kody stanu HTTP są adresowane do klientów HTTP. Nie do naszych aplikacji. Nie dla osób.
1: 409 rzadko jest implementowany jako błąd nawigacji. Zwykle wiąże się to z wykonywaniem zdalnych operacji (usuwanie, aktualizacja, nowe itp.). Ale identyfikator URI powinien istnieć. W przeciwnym razie zwycięży 404