اتصال به وبسرویسهای راهدور با MBaaS
MBaaS، زیرساختی قدرتمند و منعطف برای کاربردهای موبایل فراهم میکند. یکی از قابلیتهای کلیدی این سرویس، امکان یکپارچهسازی و اتصال آن به وب سرویسهای ارائه شده توسط شرکتهای مختلف مانند OpenWeatherMap و … است. در این مطلب، به صورت گام به گام مراحل ارتباط با سایت OpenWeatherMap.org و دریافت اطلاعات از آن مورد بررسی قرار میگیرد.
با مدیریت وبسرویسها از طریق MBaaS، شما میتوانید بسیاری از پیچیدگیهای اتصال به وبسرویسها را از دید کاربران پنهان کنید. اطلاعات احراز هویت، پارامترهای URL و هدرهای HTTP میتوانند یکبار بر روی MBaaS تنظیم و ذخیره شوند. این قابلیت باعث سادهتر، امنتر و پایدارتر شدن کلاینتها خواهد شد.
اتصال به OpenWeatherMap.org
در این مطلب قصد داریم با استفاده از وبسرویسهای سایت OpenWeatherMap.org، پیشبینی وضع آبوهوا را برای شهرهای مختلف ایران دریافت کنیم. شما میتوانید مراحل ارتباط با این سایت را با سایت مورد نظر خود جایگزین کرده و اطلاعات دلخواه خود را دریافت نمائید. جهت استفاده از APIهای این سایت ابتدا باید یک حساب کاربری در سایت OpenWeatherMap.org ایجاد کرده و API Key اختصاصی خود را دریافت نمائید.
بر اساس مستندات OpenWeatherMap، میتوان با استفاده از فراخوانی API زیر، پیشبینی وضع آبوهوا را برای ۵ روز آتی، براساس نام شهر، در بازههای ۳ ساعته و با قالبهای JSON، XML یا HTML دریافت نمود.
http://api.openweathermap.org/data/2.5/forecast?q={city name}, {country code} &mode=json &appid={API Key}
پارامترها:
q: نام شهر و کد کشور که با کاما از یکدیگر جدا شدهاند. مانند Tehran,ir
mode: یکی از مقادیر xml، json و html را میتواند داشته باشد.
appid: همان API Key ئی است که از سایت OpenWeatherMap دریافت نمودهاید.
به عنوان نمونه اگر با مرورگر خود، یا ابزارهایی مانند curl آدرس زیر را فراخوانی کنید:
http://api.openweathermap.org/data/2.5/forecast?q=Tehran,ir&mode=xml&appid=2de143494c0b295cca9337e1e96b00e0
میتوانید پیشبینی وضع آبوهوا را برای ۵ روز آینده شهر تهران با قالب xml دریافت نمائید.
حال که از کارکردن سرویس اطمینان حاصل کردیم، مراحل یکپارچهسازی آن با زیرساخت MBaaS را شرح خواهیم داد.
ایجاد سرویس بر روی MBaaS
جهت ایجاد سرویس جدید، از منوی عمودی گزینه سرویسها را انتخاب، سپس بر روی دکمه + (سرویس جدید) کلیک کنید. فرم زیر را بر اساس توضیحات ذیل تکمیل نمائید.
نوع سرویس: Remote Web Service را انتخاب نمائید.
نام: چون از این نام در فراخوانی API استفاده میشود، یک نام انگلیسی برای سرویس خود انتخاب نمائید.
عنوان: این مقدار بیشتر جنبه نمایشی دارد و میتواند مقدار فارسی داشته باشد.
توضیحات: در صورت تمایل میتوانید توضیحات دلخواه خود را در مورد سرویس یادداشت نمائید.
فعال: جهت استفاده از این سرویس این گزینه باید حتما انتخاب شده باشد.
سپس تب تنظیمات سرویس را انتخاب و بر اساس توضیحات زیر، مقادیر را مشخص نمائید.
Base URL: http://api.openweathermap.org/data/2.5/
پارامترها:
appid: مقدار API Key ئی است که از سایت OpenWeatherMap دریافت نمودهاید.
mode: مقدار این پارامتر میتواند یکی از مقادیر json، xml یا html باشد و مشخص کننده قالبی است که تمایل دارید اطلاعات را دریافت نمائید.
میتوانید پارامتر q را نیز در این قسمت مقداردهی نمائید، اما به دلیل اینکه کلاینت مشخصکننده نام شهر و کشور موردنظر است، مقدار این پارامتر باید توسط برنامه کلاینت مشخص شود.
ایجاد برنامه جهت ارتباط با سرویس:
جهت ارتباط با سرویس ایجاد شده، باید یک برنامه ایجاد نمائید. این برنامه میتواند یک کلاینت اندرویدی یا یک وبسایت باشد. در ادامه این مطلب نحوه ایجاد یک کلاینت جاوااسکریپتی با استفاده از JavaScript SDK شرح داده خواهد شد.
برای راحتی کاربران عزیز، کد برنامه موردنظر به صورت کامل نوشته شده است و از لینک weather قابل دانلود است.
برای اتصال برنامه دانلود شده به زیرساخت MBaaS، باید دو متغیر INSTANCE_URL و APP_API_KEY در فایل script.js، مشابه زیر مقداردهی شوند:
var INSTANCE_URL = 'http://mb-example.mbaas.ir';
مقدار INSTANCE_URL، آدرس نمونه سایتی است که بر روی دامنه mbaas.ir به هر کاربر اختصاص داده میشود.
var APP_API_KEY = '6ba07a202a351f257db96577f860e5c860361530';
برای به دست آوردن مقدار APP_API_KEY، باید مشابه تصویر ذیل یک برنامه بر روی زیرساخت خود ایجاد نمائید، سپس مقدار کلید ایجاد شده را به این متغیر اختصاص دهید.
در فایل functions.js، چندین تابع نوشته شده است. به عنوان مثال کد تابع forecastWeather را در ادامه میتوانید مشاهده نمائید:
forecastWeather: function(params, token, callback) { $.ajax({ dataType: 'json', contentType: 'application/json; charset=utf-8', url: INSTANCE_URL + '/api/v2/openweather/forecast' , data: params, cache:false, method:'GET', headers: { "X-DreamFactory-API-Key": APP_API_KEY, "X-DreamFactory-Session-Token": token }, success:function (response) { if(typeof callback !== 'undefined') { callback(response); } }, error:function (response) { callback(response); return false; } }); }
شاید تنها قسمتی که در قطعه کد فوق، نیاز به توضیح داشته باشد متغیر params باشد. این متغیر، که نوع آن json است، حاوی مقادیر زیر است:
params = { "q" : "Tehran,ir", "units" : "metric" };
q، نام شهری است که اطلاعات آب و هوایی آن مورد درخواست است.
untis، واحدی است که دمای هوا بر اساس آن از سایت openweathermap دریافت خواهد شد، که در این مورد metric به معنی دریافت دما با واحد سانتیگراد است.
قبل از اجرا کردن برنامه فوق، دقت فرمائید تنظیمات اولیه زیر بر روی زیرساخت MBaaS انجام شده باشند. در غیر اینصورت ممکن است با مشکل مواجه شوید.
تنطیمات اولیه زیرساخت:
- فعال سازی CORS
- در پنل مدیریتی، گزینه تنظیمات را از منوی عمودی انتخاب، سپس از منوی افقی بر روی تب CORS کلیک نمایید.
- گزینه افزودن (+) را انتخاب نمایید.
- به فیلدهای “منبع درخواست کننده”، “مسیرها” و “هدرها ” مقدار * (ستاره) را اختصاص دهید.
- در فیلد “حداکثر زمان” مقدار ۰ را وارد نمایید.
- در فیلد “متدها” همه گزینهها را انتخاب نمایید.
- گزینه فعال را انتخاب نمایید.
توجه: مقدار * به معنی همه موارد است و تنها برای تست نرمافزار پیشنهاد میشود، برای استفاده کاربردی، مقادیر فیلدها را برحسب نیاز مقداردهی نمائید.
- ایجاد نقش پیشفرض برای کاربران جدید
- در پنل مدیریتی، گزینه نقشها را از منوی عمودی انتخاب، سپس از منوی افقی دکمه افزودن (+) را کلیک نمایید.
- نام نقش (weather) را وارد و گزینه فعال را انتخاب نمایید.
- به تب دسترسیها بروید، سپس گزینه افزودن (+) برای ایجاد دسترسی به سرویسهای دلخواه را کلیک نمایید:
- فیلد سرویس را openweather انتخاب نمایید.
- فیلد توابع را * انتخاب نمایید.
- در فیلد دسترسی حداقل GET و در صورت تمایل سایر موارد را انتخاب نمایید.
- در فیلد درخواست دهنده گزینه API را انتخاب نمایید.
- دکمه ایجاد نقش را کلیک نمایید.
- فعال سازی ثبت نام
- از منوی عمودی گزینه سرویسها، سپس سرویس userرا از لیست سرویسها انتخاب نمایید.
- در تب تنظیمات گزینه Allow Open Registration را انتخاب نمایید.
- در گزینه Open Reg Role، نقشی که ایجاد نمودهاید (weather) را انتخاب نمایید.
- برای غیر فعال کردن ارسال ایمیل تایید کاربران جدید، مطمئن شوید که گزینه Open Reg Email Service خالی است.
- ذخیره سرویس را کلیک نمایید.
- از منوی عمودی گزینه سرویسها، سپس سرویس userرا از لیست سرویسها انتخاب نمایید.
توجه: مقادیر All و * در قسمت ایجاد دسترسی به معنی همه موارد است و تنها برای تست نرمافزار پیشنهاد میشود، برای استفاده کاربردی، مقادیر فیلدها را برحسب نیاز مقداردهی نمائید.
حال می توانید با استفاده از مرورگر خود فایل index.html را مشاهده نمائید، که امکان ثبت نام و ورود به برنامه را مشابه تصویر زیر فراهم میآورد:
در این مطلب، نحوه اتصال یک برنامه جاوا اسکریپتی با استفاده از JavaScript SDK شرح داده شده است. اگر قصد دارید یک برنامه اندرویدی مشابه بنویسید، نحوه اتصال به زیرساخت MBaaS تفاوت چندانی ندارد و این مطلب میتواند به این منظور نیز استفاده شود، تنها نیاز دارید که SDK اندروید را دانلود و مطلب شروع کار با SDK اندروید را مطالعه نمائید.
در صورتیکه هنگام پیادهسازی مثال فوق با هرگونه مشکل و سوالی مواجه شدید، میتوانید سوالات خود را در انجمن مطرح نمائید.