Быстрое улучшение — это ежедневная серия быстро реализуемых и легко расширяемых улучшений, которые вы можете внести прямо сейчас по крайней мере в одну кодовую базу, над которой работаете.
Ситуация
- У вас есть API. Этот API выдает ошибки.
- Вы хотите предоставлять контекстные ответы об ошибках, которые не только соответствуют лучшим практикам HTTP, но и позволяют пользователю узнать некоторые дополнительные сведения о самой ошибке.
- В настоящее время вы просто выбрасываете Internal Server 500.
Решение
Вы можете значительно улучшить реакцию вашего API на ошибки, выполнив оба следующих действия;
- Соблюдение правил HTTP Status Code
- Создание кода ошибки
enum
— будь то собственная реализация концепции на выбранном вами языке (C#) или просто статический словарь (python).
Первая часть чаще всего требует правильной реализации второй части. Второй пункт может показаться сложной задачей — особенно если ваш вызов API затрагивает несколько файлов, каждый из которых может вызвать исключение, прерывающее запрос — но на самом деле это намного проще, чем вы думаете.
Решение состоит в том, чтобы создать пользовательское исключение по строкам CapturedError
и внутри этого класса исключений сохранить перечисление кода ошибки. Всякий раз, когда есть часть проверки или операция, которая может вызвать ошибку, просто выполните блок try/catch и, используя перечисление кода ошибки и, возможно, строку, вы можете сохранить эту контекстную информацию для конечного пользователя.
Наконец, блок try/catch
на последнем уровне API впоследствии перехватывает все поднятые CapturedError
.
Простой!