Быстрое улучшение — это ежедневная серия быстро реализуемых и легко расширяемых улучшений, которые вы можете внести прямо сейчас по крайней мере в одну кодовую базу, над которой работаете.

Ситуация

  • У вас есть API. Этот API выдает ошибки.
  • Вы хотите предоставлять контекстные ответы об ошибках, которые не только соответствуют лучшим практикам HTTP, но и позволяют пользователю узнать некоторые дополнительные сведения о самой ошибке.
  • В настоящее время вы просто выбрасываете Internal Server 500.

Решение

Вы можете значительно улучшить реакцию вашего API на ошибки, выполнив оба следующих действия;

  1. Соблюдение правил HTTP Status Code
  2. Создание кода ошибки enum — будь то собственная реализация концепции на выбранном вами языке (C#) или просто статический словарь (python).

Первая часть чаще всего требует правильной реализации второй части. Второй пункт может показаться сложной задачей — особенно если ваш вызов API затрагивает несколько файлов, каждый из которых может вызвать исключение, прерывающее запрос — но на самом деле это намного проще, чем вы думаете.

Решение состоит в том, чтобы создать пользовательское исключение по строкам CapturedError и внутри этого класса исключений сохранить перечисление кода ошибки. Всякий раз, когда есть часть проверки или операция, которая может вызвать ошибку, просто выполните блок try/catch и, используя перечисление кода ошибки и, возможно, строку, вы можете сохранить эту контекстную информацию для конечного пользователя.

Наконец, блок try/catch на последнем уровне API впоследствии перехватывает все поднятые CapturedError.

Простой!