Регистрация  |  Вход

Exceptions для REST Service

Есть REST Service, я принимаю данные и как-то их обрабатываю, но в контексте SF любая ошибка - это ошибка сервера и он отдает 500.
А клиент хочет видеть понятные коды и типы ошибок: 400 при невалидном JSON; 403 - создание дубля; и т.д.

Поделитесь как вы это реализуете, есть готовые фреймворки или придется хендлить руками все ексепшены и отдавать нужные коды?

Есть REST Service, я принимаю данные и как-то их обрабатываю, но в контексте SF любая ошибка - это ошибка сервера и он отдает 500.  
А клиент хочет видеть понятные коды и типы ошибок: 400 при невалидном JSON; 403 - создание дубля;  и т.д.

Поделитесь как вы это реализуете, есть готовые фреймворки или придется хендлить руками все ексепшены и отдавать нужные коды?
RestResponse.statusCode
https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_methods_system_restresponse.htm

Автоматически никто не будет определять тип кода по ошибке чтобы его вернуть. Это дело сугубо индивидуальное и зависит от реализуемой логики.

По ссылке Gres можно подсмотреть какой код что означает и использовать наиболее подходящий для определенного типа ошибок. Но так как все варианты ошибок покрыть врядли получится, то конечно для "неожиданных" ошибок надо вернуть 500.

К примеру у тебя есть сервис который создает запись.

Если все ок, то возвращает 201 (или 200)
Если входящие данные невалидные то 400
Все остальное 500

просто оборачиваешь весь сервис в try/catch и в catch блоке возвращаешь нормальный (json к примеру) с кодом 500.
Никогда не допускай чтобы ошибка системы выходила наружу!!!!

Автоматически никто не будет определять тип кода по ошибке чтобы его вернуть. Это дело сугубо индивидуальное и зависит от реализуемой логики.

По ссылке Gres можно подсмотреть какой код что означает и использовать наиболее подходящий для определенного типа ошибок. Но так как все варианты ошибок покрыть врядли получится, то конечно для "неожиданных" ошибок надо вернуть 500.

К примеру у тебя есть сервис который создает запись.

Если все ок, то возвращает 201 (или 200)
Если входящие данные невалидные то 400
Все остальное 500

просто оборачиваешь весь сервис в try/catch и в catch блоке возвращаешь нормальный (json к примеру) с кодом 500. 
Никогда не допускай чтобы ошибка системы выходила наружу!!!!