2008-11-20 12 views
5

Przy budowie sieci usług REST w .NET, co jest najbardziej „Spokojny” sposób odwzorowywania System.ArgumentNullException i System.ArgumentException do kodów stanu HTTP? Moim pierwszym przypuszczeniem byłoby użycie HTTP 400/Bad Request z odpowiednim opisem.

Jaka jest zalecana najlepsza praktyka podczas mapowania wyjątków do kodów statusu HTTP?Mapowanie wyjątki kodów stanu HTTP w REST usług internetowych

Odpowiedz

8

Ogólnie, kody stanu 4xx powiedzieć klientowi, że wniosek nie udało, ale może się uda, jeżeli wniosek i smodified. Kody 5xx informują klienta o problemach, na które klient nie ma wpływu.

Pierwszym rozróżnieniem, które należy wprowadzić, jest kodowanie 4xx i 5xx, tj. Poinformowanie klienta, czy powinien ponowić próbę, czy nie.

HTTP 400 "Złe żądanie" powinno być używane, jeśli żądanie było rzeczywiście błędne pod względem składni, niekompletne, sprzeczne lub w inny sposób w zasadzie błędne. Dodatkowo może to być prawidłowy stan domyślny w zakresie 4xx, jeśli żaden inny status nie wydaje się odpowiedni i uważasz, że klient musi tylko zmodyfikować żądanie, aby odnieść sukces.

+0

Z punktu widzenia serwera adresowania kliencie: * 4xx: Coś było nie tak na * swoją * bok, proszę przeformułować pytanie i spróbuj ponownie * 5xx: Coś poszło nie tak na * nasze * boczny, przepraszam , jeśli możesz po prostu powtórzyć to, co właśnie powiedziałeś? – conny

1

To zależy od kontekstu. Na przykład. ArgumentNullException może wynikać z naruszonego warunku wstępnego lub być wewnętrznym błędem serwera.

Pozdrawiam, tamberg

Powiązane problemy