5 ошибок в продакшене, которые я совершил при работе с Express APIs

API ломаются не из-за сложного кода.

Они ломаются, потому что вы игнорируете скучные детали.

Я извлек эти пять уроков из реальных ошибок в продакшене.

  1. Валидируйте данные на раннем этапе

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

Теперь я сразу отсекаю некорректные запросы.

Если в запросе отсутствует валидный email, сразу возвращайте ошибку 400. Не позволяйте плохим данным доходить до основной логики.

  1. Используйте специфические коды ошибок

Обобщенная ошибка 500 никому не помогает.

Если API-ключ недействителен, возвращайте ошибку 401. Если у пользователя недостаточно средств, возвращайте ошибку 402.

Если вам приходится объяснять суть ошибки в Slack, значит, ваше сообщение в API было составлено неудачно.

  1. Проверяйте порядок middleware

Я потратил часы на отладку проблем с аутентификацией. А проблема была всего лишь в порядке моих middleware.

Соблюдайте такой порядок:

Одна неверная строка ломает всё.

  1. Логируйте правильные данные

Я пробовал разные стили логирования. Большинство из них были бесполезны.

Для стандартного отслеживания логируйте метод, путь и код состояния.

Для ошибок логируйте request ID, сообщение об ошибке и stack trace.

Всё остальное — лишь шум, когда вы просыпаетесь в 3 часа ночи.

  1. Устанавливайте rate limits

Я видел, как на один эндпоинт шел такой наплыв запросов, что это стоило реальных денег.

API без ограничений полагается на надежду. А надежда — это не стратегия безопасности.

Используйте express-rate-limit для защиты вашего сервера.

Большинство сбоев API происходит из-за игнорирования основ.

Продакшену плевать на ваши планы. Его волнует только ваша конфигурация.

Источник: https://dev.to/manolito99/5-production-mistakes-that-changed-how-i-build-express-apis-133e