Як зробити перевірку введення простою та чистою у вашому додатку Express.js

Шайлеш Шехават

зробити

Навіщо нам потрібна перевірка на стороні сервера?

  • Вашої перевірки на стороні клієнта недостатньо, і вона може бути порушена
  • Більш схильний до Man в середніх атаках, і сервер ніколи не повинен довіряти стороні клієнта
  • Користувач може вимкнути перевірку JavaScript на стороні клієнта та маніпулювати даними

Якщо ви створювали веб-додатки, використовуючи фреймворк Express або будь-який інший фреймворк Node.js, перевірка відіграє вирішальну роль у будь-якому веб-додатку, який вимагає перевірки запиту параметра тіла тіла запиту .

Написання власної функції проміжного програмного забезпечення може бути громіздким, якщо

  • ви хочете рухатися швидко, зберігаючи якість коду або
  • Ви хочете уникати використання якщо (вказівка.тіло.голова) або якщо (вказівка.params.isCool) у вашій головній функції контролера, де ви визначаєте бізнес-логіку

У цьому підручнику ви дізнаєтеся, як перевірити введення в додатку Express.js за допомогою відкритого вихідного коду та популярного модуля, який називається express-validator.

Вступ до експрес-валідатора

Визначення Github говорить:

Модуль реалізує п’ять важливих API:

  • Перевірте API
  • API фільтра
  • API санітарної ланцюга
  • API ланцюжка перевірки
  • API результатів перевірки

Давайте поглянемо на основний маршрут користувача без будь-якого модуля перевірки для створення користувача: /route/user.js

Тепер у користувацькому контролері /controllers/user.js

Наведений вище код - лише базовий приклад перевірки полів самостійно.

Ви можете обробляти деякі перевірки у вашій користувацькій моделі за допомогою Mongoose. Для найкращих практик ми хочемо переконатися, що перевірка відбувається перед діловою логікою.

експрес-валідатор подбає про всі ці перевірки та санітарію вхідних даних.

Встановлення

Включати модуль у вашому основному файлі server.js:

Тепер, використовуючи express-validator, ваш /routes/user.js буде виглядати так:

Тут userController.validate - це функція проміжного програмного забезпечення, яка пояснюється нижче. Він приймає назву методу, для якого буде використовуватися перевірка.

Давайте створимо функцію проміжного програмного забезпечення validate () у нашому /controllers/user.js:

Зверніться до цієї статті, щоб дізнатись більше про визначення функції та її використання.

Функція body перевіряє лише req.body і приймає два аргументи. По-перше, це назва власності. По-друге, це ваше власне повідомлення, яке буде показано, якщо перевірка не вдасться. Якщо ви не надасте власне повідомлення, буде використано повідомлення за замовчуванням.

Як бачите, для обов’язкового поля ми використовуємо метод .exists (). Ми використовуємо .optional () для необов’язкового поля. Подібним чином isEmail () isInt () використовується для перевірки електронної пошти та цілих чисел .

Якщо ви хочете, щоб поле введення включало лише певні значення, тоді ви можете використовувати .isIn ([]). Для цього потрібно масив значень, і якщо ви отримаєте значення, відмінні від зазначених вище, тоді буде видано помилку.

Наприклад, поле стану у наведеному вище фрагменті коду може мати лише увімкнене або вимкнене значення. Якщо ви надасте будь-яке значення, крім цього, буде видано помилку.

У /controllers/user.js напишемо a createUser функція, де ви можете писати ділову логіку. Це буде викликано після перевірити () з результатом перевірок.

Якщо вам цікаво, що таке validationResult (req)?

Ця функція знаходить помилки перевірки у цьому запиті та обертає їх у об’єкт із зручними функціями

Тепер, коли запит включає недійсні параметри тіла або поле userName відсутнє в req.body, ваш сервер відповість так:

Отже, якщо ім’я користувача чи електронна пошта не змогли задовольнити перевірку, тоді кожна помилка, повернута методом .array (), має такий формат за замовчуванням:

Як бачите, цей модуль дійсно допомагає нам самостійно подбати про більшість перевірок. Він також підтримує якість коду і зосереджується в основному на бізнес-логіці.

Це було введенням у перевірку вхідних даних за допомогою експрес-валідатор модуль і перевірити, як перевірити масив елемента та зробити власну власну перевірку в Частині 2 цієї серії.

Я постарався з усіх сил і сподіваюся, що виклав достатньо, щоб детально пояснити це, щоб ви могли розпочати.

Якщо у вас виникнуть проблеми, не соромтеся зв’язуватися або коментувати нижче.
Я був би радий допомогти:)

Підписуйтесь на Shailesh Shekhawat, щоб отримувати сповіщення щоразу, коли я публікую нову публікацію.

Не соромтеся плескати, якщо вважаєте, що це варто прочитати!

Спочатку опубліковано на 101node.io 2 вересня 2018 року.

Шайлеш Шехават

Старший розробник NodeJS ★ Повний стек | ReactJS ★ Автор @ 101node.io ★ Вирішувач проблем, користувач Linux/Mac, який любить математику та логіку.

Якщо ви читали це далеко, пишіть твіту авторові, щоб показати їм, що вам все одно. Твітуйте подяку

Навчіться безкоштовно кодувати. Програма з відкритим кодом freeCodeCamp допомогла понад 40 000 людям влаштуватися на роботу розробниками. Почати

freeCodeCamp - це некомерційна організація, звільнена від сплати податків 501 (c) (3), яку підтримує донор (Федеральний податковий ідентифікаційний номер США: 82-0779546)

Наша місія: допомогти людям навчитися кодувати безкоштовно. Ми досягаємо цього, створюючи тисячі відео, статей та інтерактивних уроків кодування - і все це у вільному доступі для широкої публіки. У нас також є тисячі навчальних груп freeCodeCamp по всьому світу.

Пожертви на freeCodeCamp спрямовуються на наші освітні ініціативи та допомагають оплачувати сервери, послуги та персонал.