5 ошибок в продакшене, которые я совершил при работе с Express APIs
API ломаются не из-за сложного кода.
Они ломаются, потому что вы игнорируете скучные детали.
Я извлек эти пять уроков из реальных ошибок в продакшене.
- Валидируйте данные на раннем этапе
Раньше я валидировал данные внутри бизнес-логики. Это приводило к багам, которые было трудно отследить до источника.
Теперь я сразу отсекаю некорректные запросы.
Если в запросе отсутствует валидный email, сразу возвращайте ошибку 400. Не позволяйте плохим данным доходить до основной логики.
- Используйте специфические коды ошибок
Обобщенная ошибка 500 никому не помогает.
Если API-ключ недействителен, возвращайте ошибку 401. Если у пользователя недостаточно средств, возвращайте ошибку 402.
Если вам приходится объяснять суть ошибки в Slack, значит, ваше сообщение в API было составлено неудачно.
- Проверяйте порядок middleware
Я потратил часы на отладку проблем с аутентификацией. А проблема была всего лишь в порядке моих middleware.
Соблюдайте такой порядок:
- Сначала CORS
- Затем парсинг JSON
- Затем аутентификация
- В конце — роуты
Одна неверная строка ломает всё.
- Логируйте правильные данные
Я пробовал разные стили логирования. Большинство из них были бесполезны.
Для стандартного отслеживания логируйте метод, путь и код состояния.
Для ошибок логируйте request ID, сообщение об ошибке и stack trace.
Всё остальное — лишь шум, когда вы просыпаетесь в 3 часа ночи.
- Устанавливайте rate limits
Я видел, как на один эндпоинт шел такой наплыв запросов, что это стоило реальных денег.
API без ограничений полагается на надежду. А надежда — это не стратегия безопасности.
Используйте express-rate-limit для защиты вашего сервера.
Большинство сбоев API происходит из-за игнорирования основ.
Продакшену плевать на ваши планы. Его волнует только ваша конфигурация.
Источник: https://dev.to/manolito99/5-production-mistakes-that-changed-how-i-build-express-apis-133e