Wpis z mikrobloga

Cześć,
potrzebuję w api restowym zwrócić dto które poza jakimś standardowym zbiorem informacji posiada w jednym z pól wynik działania matematycznego w postaci "**6/ X * (2+Y)**".

Problem w tym, że zarówno X jak i Y to liczby naturalne od 0 w górę i o ile przy Y to nie sprawia problemu o tyle, gdy pod X trafi się 0 to poleci wyjątek bo dzielenie przez 0 jest niepoprawne.

Jak powinienem obsłużyć tego typu sytuację w kodzie tzn co w takim wypadku powinienem zwrócić w polu które normalnie ten wynik by zawierało? Czy przypadkiem nie powinienem uzgodnić z odbiorcą api takich szczegółów jak obsłużyć tego typu przypadki?

#programista15k #programowanie #naukaprogramowania
  • 15
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@Generyczny_nick:
Zwróć błąd 400 bez pola wyniku ale z wyjaśnieniem "y cannot be 0 because...", podobnie błędy możesz zwracać dla brakującego x czy y z wyjaśnieniem, wtedy używający widzi błąd i ma jasny feedback.
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@Generyczny_nick:
Jeżeli y nie przychodzi w zapytaniu do REST a ten wynik jest krytyczna dana w odpowiedzi (nie jakaś dodatkową np. dodatkowym polem na wpisie na blogu) to trzeba zgłosić błąd. Jeśli to takie dodatkowe pole to nie jest nawet kwestia API tylko wewnętrznej logiki serwera jak on traktuje brak takiej wartości i pewnie null trzebaby zwrócić jeśli chcemy puste pole wyświetlić w odpowiedzi.
  • Odpowiedz
@Generyczny_nick: jeżeli ta wartość to tylko dodatek do reszty danych dostępnych w responsie to zwracałbym null lub brak klucza/wartości. Oczywiście trzeba to opisać w dokumentacji do API.
  • Odpowiedz
@Generyczny_nick:
Zależy od pola, generalnie to realny kejs który można poruszyć z właścicielem produktu. Jak oczekujemy Y zawsze to niech go pouzupełnia i wtedy to co jest zwracane w momencie błędu nie ma takiego znaczenia, jak Y zależy np. od jakiegoś zewnętrznego API które nie zawsze je dostarcza to można ustalić zachowanie gdy tego pola nie ma, można dorzucić dodatkowe pole w odpowiedzi z informacją o y, że np. isProcessing: true,
  • Odpowiedz
@Deykun: dostałem info, że zwrotka w postaci 500 nie wchodzi w grę i "trzeba to obsłużyć biznesowo".
Zastanawiam się nad zwróceniem w tym polu nulla i dodaniu jakiejś tablicy obiektów error (error code, message, details) z w tym przypadku jednym elementem czemu to moje pole jest nullem.
  • Odpowiedz