نود.جی.اس قهرمان – آموزش برقراری ارتباط با API

نود.جی.اس قهرمان – آموزش برقراری ارتباط با API

این ششمین پست از سری آموزش Node Hero است – در این فصل ها یاد خواهید گرفت چطور از Node.js استفاده کنید و چطور با استفاده از آن محصولات نرم افزاری توسعه دهید.

در ادامه آموزش درباره اصول اولیه HTTP آشنا می شوید و یاد می گیرید که چطور منابع را از آدرس های خارجی با استفاده از ماژول request دریافت کنید.

فصل های گذشته و آینده:

  1. شروع کار بار Node.js
  2. استفاده از NPM
  3. درک مفهوم برنامه نویسی async 
  4. ساخت اولین سرور Node.js 
  5. دسترسی به دادهای درون دیتابیس 
  6. برقراری ارتباط با API [در حال خواندن آن هستید]
  7. سازماندهی ساختاری پروژه
  8. احراز هویت کاربران
  9. تست نرم افزار Node.js
  10. اشکال زدایی Node.js
  11. امنیت برنامه
  12. انتقال برنامه Node.js به Host اشتراکی
  13. نظارت بر روی برنامه Node.js

HTTP چیست؟

HTTP مخفف Hypertext Transfer Protocol است. HTTP به عنوان یک پروتکل requestresponse در مدل کلاینت–سرور می‎باشد عمل می کند.

 

کدهای وضعیت HTTP

قبل از اینکه سراغ ارتباط با API برویم، اجازه دهید کدهای وضعیت HTTP را مرور کنیم چون ممکن است در طول فرآیند با آنها روبرو شویم. آنها نتیجه درخواست ها و رفع خطاها کاربرد دارند.

  • 1xx – اطلاعات
  • 2xx – با موفقیت انجام شده: این کد وضعیت نشان می دهد که درخواست ما دریافت شده و به درستی مورد پردازش قرار گرفته است. رایجترین کدهای موفقیت 200 OK و 201 Created و 204 No Content است.
  • 3xx – تغییر مسیر یا Redirection: این گروه از کدها نشان می دهند که کاربر در حال انجام یک عمل اضافی برای تکمیل درخواست خود است. رایجترین کدها تغییر مسیر 301 Moved Permanently و 304 Not Modified است.
  • 4xx – خطای کاربر: این گروه از کدهای وضعیت هنگامی استفاده می شود که درخواست توسط کلاینت ارسال شده است و به دلایلی با شکست روبرو شده است. پاسخ سرور معمولا با شرح خطا همراه است. رایجترین کدهای خطای کلاینت 400 Bad Request و 401 Unauthorized و 403 Forbidden و 404 Not Found و 409 Conflict است.
  • 5xx – خطای سرور:این نوع کدهای وضیعت نشان می‌دهند که سرور با خطای داخلی در هنگام پردازش درخواست مواجه شده است. خطا های ایجاد شده از سرور است، نه از درخواست. دلیل این خطا ممکن است به موجب بودن باگ در کدها یا برخی از عملکردهای موفت یا دائم باشد. رایجترین این کدهای خطا 500 Internal Server Error و 503 Service Unavailable است. اگر دوست دارید اطلاعات بیشتری در درخصوص کدهای وضعیت HTTP یاد بگیرید می توانید اینجا را مطالعه کنید.

 

ارسال درخواست به API های خارجی

در Node.js اتصال به API های خارجی آسان است. تنها کافیست ماژول HTTP را به برنامه اضافه کنید و شروع به ارسال request کنید.

البته که روش های بسیاری برای فراخوانی آدرس های خارجی وجود دارد. در NPM می توانید ماژول های بسیاری را که این پروسه را آسان می کنند پیدا کنید. به عنوان مثال، محبوبترین اینها ماژول های request و superagent است.

هر دوی این ماژول ها دارای یک رابط خطای callback است که می توانند به برخی از مسائل منجر شود (مطمئن هستم در مورد Callback-Hell شنیده باشید)، اما خوشبختانه ما دسترسی به نسخه promise را داریم.

 

استفاده ازماژول Request نود.جی.اس

استفاده از ماژول request-promise بسیار ساده است. پس از نصب از NPM، تنها کافیست آن را به برنامه خود اضافه کنید:

ارسال یک درخواست GET به سادگی زیر است:

اگر شما یک JSON API را فراخوانی کنید، شاید بخواهید request-promise بطور خودکار پاسخ را تجزیه کند. در این مورد تنها کافیست این گزینه را به options اضافه کنید:

درخواست POST نیز به روش مشابه انجام می شود:

برای اضافه کردن پارامترهای کوئری کافیست مشخصه qs را به شی options اضافه کنید:

این گزینه باعث می شود آدرس درخواست شما بصورت زیر باشد:

حتی می توانید به همان روش مشابه هدرهایی به پارامترهای کوئری اضافه کنید:

رفع خطا

چون نمی دانیم چه اتفاقی در برنامه ما رخ خواهد داد، رفع خطا بخش مهمی از ساخت درخواست‌ها به یک API خارجی است. به غیر از خطاهای کلاینت، سرور ممکن است با خطا پاسخ دهد یا فقط داده هایی در فرمت اشتباه یا ناسازگار ارسال کند. این را به خاطر داشته باشید وقتی سعی دارید به پاسخ ها رسیدگی کنید. همچنین استفاده از catch برای هر درخواست روش خوبی برای جلوگیری از کرش کردن سرور از سوی سرویس های خارجی است.

 

قرار دادن اینها در کنار هم

درحال حاظر شما یاد گرفته اید که چطور یک سرور HTTP با Node.js راه اندازی کنید و صفحات HTML را نمایش دهید، و چطور داده ها را از یک API خارجی دریافت کنیم. زمان آن فرا رسیده است که اینها را کنار هم قرار دهیم!

در این مثال قصد داریم یک برنامه ساده Express درست کنیم تا  وضعیت آب و هوا را بر اساس نام شهر نمایش دهد.

(برای دریافت کلید AccuWeather API لطفا به بخش developer سایت مراجعه کنید)

مثال فوق به شرح زیر است:

  • ساخت یک سرور Express
  • تنظیم handlebars – برای فایل hbs. به ساخت اولین سرور HTTP با Node.js مراجعه کنید.
  • ارسال یک درخواست به API‌ خارجی
    •  اگر همه چیز درست باشد، صفحه نمایش داده می شود
    • در غیر این صورت صفحه ای حاوی خطا نمایش می دهد

قدم بعدی

در بخش بعدی یاد خواهید گرفت که چطور ساختار پروژه Node.js خود را بدرستی سازماندهی کنید.

 


  • بحث api شد و این روزها خیلی استفاده می شه پس گفتم خوبه که این منبع:
    http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api

    رو معرفی کنم که استاندارهای این معماری رو می گه که خیلی عالیه.

    هر چند node.js کار نیستم ولی عالیه ادامه بدید.

  • این رو یادم رفت بگم که خیلی خوبه که واسه من و بقیه تنبل ها پلاگین disqus رو نصب کنی که دیگه کامنت گذاشتن برای ما لذت بخش تر بشه.
    البته در حد ایده هست.