در فریم ورک Express برای اینکه ریکوئست ها رو validate کنیم، میتونیم از کتابخانه های مختلفی استفاده کنیم. یکی از این کتابخانه ها و احتمالا معروفترین اونها ExpressValidator هست. این کتابخانه روش های مختلفی را بر اساس اصول express در اختیار برنامه نویسان قرار میده تا بتوانند درخواست ها رو راستی آزمایی کنند (فارسی را پاس بداریم). تو این مقاله میخوام شما رو با روش مورد علاقه ام آشنا کنم.
روشی که من دوست دارم و کمتر مورد توجه قرار میگیره استفاده از Schema هست. قشنگیه این روش اینه که جنسش از جنس تعریف نگرانی ها و راستی آزمایی هاست نه عملیات و action. نکته دیگه ای که در مورد این روش دوست دارم اینه که schema را همراه با تابع کنترلر و خطاها ( هر چی که مربوط به ریکوئست میشه) در یک ماژول خاص اون ریکوئست نگه میدارم و جزییات validation رو لابلای مسیریابی مشخص نمیکنم. در ادامه با این روش پیاده سازی بیشتر آشنا میشیم.
جهت کامل بودن مطلب، بگم که ExpressValidator اینطوری نصب میشه:
اولین کار اینه که schema رو تعریف میکنیم:
یادمون باشه که باید schema رو از ماژول مربوطه اکسپورت کنیم، تا بتونیم ازش استفاده کنیم.
قبل از اینکه بریم سراغ مسیریابی، یک ماژول خاص تعریف کنیم بنام validateRequest.js که شامل یک middleware هست که پروسه راستی آزمایی درخواست ها رو انجام بده:
بنظر میاد وقتشه که بریم سراغ مسیریاب پروژه مون (Router) :
همون طور که می بینید، راه استفاده از آبجکت schema اینه که به تابع checkSchema پاسش بدیم. middleware بعدی که صدا میکنیم validateRequest هست و اگر ریکوئست درستی ارسال شده بود، کنترلر مربوط به ریکوئست صدا میشه. و به این ترتیب ما به راحتی آب خوردن میتونیم درخواست ها رو راستی آزمایی کنیم.
تنها مشکل این روش اینه که پیدا کردن راه های تعریف قوانینش، نسبت به روش های دیگه سخت تره. ولی خواندنش به نظر من راحت تره و وقتی بهش مسلط بشیم، دستمون بازتره.
:)