نودجیاس (Node.js) به دلیل معماری رویدادمحور و غیرهمگام (Non-blocking I/O) یکی از محبوبترین بسترهای ساخت بکاند برنامههای مدرن و اپلیکیشنهای بلادرنگ است. در این آموزش، ساخت یک کلاینت تمیز، بهینه و ضد خطا با Axios و TypeScript برای ارسال پیامکهای متنی و کدهای احراز هویت (OTP) را پیادهسازی میکنیم.
نصب پیشنیازها
در پوشه پروژه خود کتابخانههای axios و dotenv را نصب کنید:
پیادهسازی کلاس کلاینت پیامک (FreeSmsClient.ts)
بهترین الگو، ساخت یک سرویس ماژولار است که کلید API و تنظیمات پایه را در هدر نگه داشته و متدهای مورد نیاز را در قالب توابع خوانا اکسپورت کند:
نحوه استفاده در کنترلر Express.js
در فایل authController.js میتوانید هنگام ثبت نام کاربر یا درخواست ورود با شماره موبایل، کد احراز هویت را در کمتر از ۳ ثانیه ارسال کنید:
دریافت گزارش وضعیت تحویل پیامک با Webhook
به جای پولینگ و درخواستهای مکرر GET برای بررسی وضعیت پیامک، وبهوک تحویل را روی سرور Express تنظیم کنید:
axios-retry در صورت بروز خطای 503 یا تایماوت، درخواست را با فاصله تصادفی تا ۲ بار تکرار کنید.
سوالات متداول
آیا امکان استفاده در فریمورک NestJS وجود دارد؟+
بله، میتوانید کلاس FreeSmsClient را به عنوان یک Provider تزریقشونده در ماژول AuthModule یا NotificationModule خود تعریف و Inject نمایید.
تایماوت بهینه برای ارسال OTP با Axios چقدر است؟+
به دلیل پاسخدهی بلادرنگ وبسرویس پترن فری اس ام اس، تایماوت ۵۰۰۰ میلیثانیه (۵ ثانیه) انتخابی استاندارد و ایدهآل است.
آیا کلاینت Node.js از TypeScript به صورت کامل پشتیبانی میکند؟+
بله، کدهای ارائه شده دارای Type Definition کامل برای پارامترهای درخواست و ساختار پاسخ بازگشتی هستند و به راحتی در پروژههای NestJS و Next.js قابل استفادهاند.
چگونه وضعیت تحویل پیامکها (Delivery Report) را در Express دریافت کنیم؟+
یک روت POST به عنوان Webhook در سرور خود تعریف کرده و آدرس آن را در پنل فری اس ام اس ثبت کنید. به محض تغییر وضعیت پیامک، وبهوک فراخوانی شده و دیتای تحویل در بادی درخواست قرار میگیرد.