Есть 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. Никогда не допускай чтобы ошибка системы выходила наружу!!!!