۱۳۹۵/۱۲/۰۸, ۲۱:۳۶
(آخرین ویرایش: ۱۳۹۵/۱۲/۰۸, ۲۲:۰۲، توسط spadana2004.)
با سلام
پیش از شروع به توضیحات لازم به توضیح است مختصری در مورد Third Party و Restful API توضیح دهم و سپس به ادامه آموزش در مورد اتصال ویتایگر به سایر سرویس ها بپردازم
آشنایی با مفهوم RESTful API
یکی از بخشهای لاینفک وب مدرن، ای پی آی ها، به کارگیری از آن ها، توسعه ی آنها و مهم از همه معماری RESTful API است که هر توسعهدهنده ی وب اپلیکیشنی، باید با ساز و کار آن آشنایی داشته باشد که در این آموزش قصد دارم نگاهی کلی به مفهوم رستفول ای پی آی داشته باشم.
REST مخفف واژگان Representational State Transfer است که از سال ۲۰۰۵ در وب شناخته شد که در ظاهر کمی گیجکننده به نظر می رسد، اما با کمی توضیح، میتوان این مفهوم در ظاهر پیچیده را رمزگشایی کرد!
اگر خیلی ساده بخواهم به این قضیه نگاه کنم، REST عبارت است از راه کارها و روشهایی که با استفاده از آنها میتوان به رد و بدل دیتا از طریق شبکه پرداخت. به عبارت دیگر، REST راهی ساده به منظور سازماندهی تعاملات مابین سیستمهای مجزا از یکدیگر می باشد.
در مقابل REST، پروتکل SOAP که مخفف واژگان Simple Object Access Protocol است قرار دارد که از طریق آن میتوان به رد و بدل دیتا از طریق شبکه در قالب وب سرویس های مختلفی با فرمت XML پرداخت.
API هم مخفف واژگان Application Programming Interface است که دربرگیرنده ی متدهایی برای ارتباط با سایر لایبرری ها یا اپلیکیشن ها است.
حال اگر این اصطلاحات در کنار یکدیگر قرار دهم و چیزی تحت عنوان RESTful API بسازم، منظورمان ساز و کارهایی برای ارتباط با سایر سرویس ها با استفاده از معماری خاصی است. معماری REST دارای یکسری ویژگیها است که شاخص ترین آنها عبارتند از:
- ثبات و یکنواختی این معماری در جای جای API
- عدم برخورداری از سشن در سمت سرور
- به کارگیری از کدهای وضعیت اچ تی تی پی
- استفاده از یو آر ال ها برای مشخص ساختن مسیرهای مد نظر
- اعمال کوئری ها در یو آر ال به جای هدر پروتکل اچ تی تی پی
با این تفاسیر، RESTful API ها به خدمت توسعه دهندگان وب آمدهاند تا فرایند توسعه ی وب، ایجاد تجربه ی کاربری بهتر، سهولت در استفاده از ای پی آی ها و نقل و انتقال دادهها از طریق پروتکل اچ تی تی پی را امکانپذیر سازند.
علاوه بر این، توجه داشته باشم که REST بیش از آنکه پروتکل باشد، یکسری راهنما، اصول و قواعدی است که با استفاده از آنها میتوانم به برقراری ارتباط مابین منابع مختلف بپردازم.
حال برای درک بهتر این موضوع، مثالی عملی می زنم. فرض کنم که قصد دارم از ای پی آی شبکه ی اجتماعی توییتر برای نشان دادن محبوبترین توییت ها در وب سایت خود استفاده کنم. در چنین شرایطی، ما بدون آن که دسترسی به سرور این شبکه ی اجتماعی داشته باشیم، قادر خواهیم بود تا دیتای مد نظر خود را گرفته و در معرض دید کاربرانمان قرار دهم. معمولاً سرویس هایی که API در اختیار توسعه دهندگان قرار می دهند، دیتای مد نظر را در فرمت JSON در اختیار آنها قرار میدهند البته برخی سرویس ها هم هستند که از فرمت XML استفاده می کنند.
آشنایی با مفاهیم third party (سوم شخص)
برنامه های شخص سوم (third party)، برنامه هایی هستند که برای کار درون سیستم عامل ها نوشته شده، اما به وسیله افراد یا شرکت ها به غیر از تولید کننده سیستم عامل نوشته میشوند. به عنوان مثال، سیستم های مایکروسافت به همراه بسته ای از چندین برنامه نرم افزاری می آیند. از اینها، هر برنامه ای که به وسیله مایکروسافت ایجاد شده باشد، یک برنامه شخص اول (first party) است. هر برنامه ای که به وسیله یک شرکت متفاوت یا یک فرد ایجاد شده باشد برنامه شخص سوم است؛ چنین چیزی در مورد سیستم های اپل و لینوکس نیز صادق است. در این معادله، شخص دوم (second party) کاربر است.
برنامه های شخص سوم میتوانند برنامه های مستقلی باشند یا می توانند پلاگین های کوچکی باشند که قابلیت هایی را به یک برنامه دیگر می افزایند. گروه پیشین بی پایان است. در یک سیستم معمولی، برنامه های شخص سوم مستقل شامل ده ها برنامه است. مرورگرهای وب همانند اپرا، سافاری و فایرفاکس و خدمات گیرنده های ایمیل همانند تاندربرد، !The Bat و Pegasus چند نمونه از برنامه های شخص سوم مستقل محبوب هستند. بیشتر برنامه های ضد ویروس، دیواره های آتش (firewallss)، برنامه های چند رسانه ای – در اصل هر برنامه ای که به وسیله مایکروسافت، اپل، یا لینوکس نوشته نشده باشد، و باز هم برای کار بر روی آن سیستم ها ساخته شده باشند – در این گروه قرار میگیرند. استفاده از یک برنامه شخص سوم، از لحاظ نظری درجه آسیب پذیری بالقوه را کاهش میدهد.
نوع متفاوتی از برنامه شخص سوم، قابلیت های اضافی را برای یک برنامه اصلی فراهم می کند. این نوع از برنامه های شخص سوم به عنوان پلاگین ها و افزونه ها شناخته می شوند. برنامه اصلی موجود خود ممکن است یک برنامه شخص سوم، یا یک برنامه شخص اول باشد. مثال ها عبارتند از پلاگین های رمزنگاری برای برنامه های ایمیل، پلاگین های چند رسانه ای برای مرورگرهای وب برای تماشای فیلم ها یا مشاهده محتوای فلش، یا پلاگین هایی که گونه های خاصی از فایل ها را میخوانند همچون پلاگین Adobe Acrobat مورد استفاده در مرورگرها برای خواندن فایل های pdf .
اگرچه پلاگین ها و افزونه ها برای برنامه های شخص اول نیز موجود هستند، اکثریت وسیعی برای نرم افزارهای متن باز (open source) نوشته میشوند. مایکروسافت و اپل کد منبع سیستم عامل های اختصاصی شان را در دسترس عموم قرار نمیدهند، و این توانایی یک شخص سوم برای نوشتن یک پلاگین یا افزونه را محدود میکند. بیشتر برنامه های شخص سوم نیز اختصاصی هستند، و یک شرکت کد منبع را به صورت محرمانه نگه میدارد.
هرچند، برنامه های شخص سوم بسیاری وجود دارند که متنباز هستند و این گروه از نرم افزارها در حال رشد است. مرورگر وب فایرفاکس و خدمات گیرنده ایمیل تاندربرد (Thunderbird) تنها دو نمونه از برنامه های شخص سوم منبع باز هستند که خیلی محبوب هستند. این محبوبیت ناشی از فهرست در حال رشد افزونه ها و پلاگین های مناسب و سودمند است که برای این برنامه ها به صورت رایگان موجود هستند. برنامه های شخص اول منبع باز، به استثنای سیستم عامل های لینوکس که یک استثناء را ایجاد می کنند، کمیاب هستند.
همگام سازی ویتایگر با نرم افزار شخص سوم (REST APIs)
REST API
از مزایای REST API ها ارسال و دریافت داده بر روی HTTP(s) از نرم افزار ویتایگر و یکپارچه سازی با نرم افزارهای شخص سوم می باشد. شما کاملا در انتخاب کتابخانه ای برنامه نویسی برای استفاده از API ها آزاد می باشید. برای کار کردن با REST API ها از طریق زبان های برنامه نویسی مختلف، Vtwsclib این امکان زا برای شما فراهم می سازد.
http://code.vtiger.com/vtiger/vtigercrm-...r/vtwsclib
بخش زیر جزئیات بیشتری در مورد API ها ارائه میدهد:
فرمت Request (درخواست)
HTTP - GET / POST
application/x-www-form-urlencoded
فرمت Response (پاسخ)
موفق
ناموفق
عملیات ورود
این فرایند دو مرحله ای شامل دریافت کد چالش (توکن) و تبادل اعتبار نامه ها ( رمز عبور و کلید دسترسی) می باشد. شما می تواند اطلاعات کلید دسترسی (accessKey ) را در بخش "تنظیمات پروفایل من" در رابط کاربری وب نرم افزار خود پیدا کنید.
کد چالش (Challenge)
پاسخ کد چالش
ورود (Login)
پاسخ (Response )
عملیات خروج (Logout)
عملیات لیست انواع (List Types)
عملیات واکشی اطلاعات (Describe)
عملیات ایجاد (Create)
عملیات بازیابی (Retrieve)
عملیات به روز رسانی (Update)
عملیات حذف (Delete)
عملیات کوئری (Query )
<QUERY>
فرمت :
<column_list> کاما لیست نام فیلد ها را از هم جدا می کند
<object> نام ماژول
<conditionals> <condition_operations> یا <in_clauses> یا <like_clauses> به وسیله عملگرهای and یا or از یکدیگر جدا می شوند و از چپ به راست پردازش می شوند. هیچ گروه بندی وجود ندارد، تمام این موارد عملگرهایی هستند که در براکت می باشند.
<condition_operations> <, >, <=, >=, =, !=
<in_clauses> in ()
<like_clauses> مانند sqlregex
<value_list> کاما لیست مقادیر را جدا می کند.
m, n مقادیر را به ترتیب برای تعیین انحراف و محدوده همگام سازی می کند.
محدودیت ها
• کوئری ها در حال حاضر محدود به یک شی (object) منحصر بفرد می باشند
• اتصالات(Joins) پشتیبانی نمی شوند
• کوئری همواره خروجی خود را تا حدود 100 رکورد محدود می کند، نرم افزار کلاینت می تواند از عملگر های محدودی برای دریافت رکوردهای مختلف استفاده کند.
عملیات همگام سازی (Sync)
عملیات گسترش بخش (Extend Session)
پیش از شروع به توضیحات لازم به توضیح است مختصری در مورد Third Party و Restful API توضیح دهم و سپس به ادامه آموزش در مورد اتصال ویتایگر به سایر سرویس ها بپردازم
آشنایی با مفهوم RESTful API
یکی از بخشهای لاینفک وب مدرن، ای پی آی ها، به کارگیری از آن ها، توسعه ی آنها و مهم از همه معماری RESTful API است که هر توسعهدهنده ی وب اپلیکیشنی، باید با ساز و کار آن آشنایی داشته باشد که در این آموزش قصد دارم نگاهی کلی به مفهوم رستفول ای پی آی داشته باشم.
REST مخفف واژگان Representational State Transfer است که از سال ۲۰۰۵ در وب شناخته شد که در ظاهر کمی گیجکننده به نظر می رسد، اما با کمی توضیح، میتوان این مفهوم در ظاهر پیچیده را رمزگشایی کرد!
اگر خیلی ساده بخواهم به این قضیه نگاه کنم، REST عبارت است از راه کارها و روشهایی که با استفاده از آنها میتوان به رد و بدل دیتا از طریق شبکه پرداخت. به عبارت دیگر، REST راهی ساده به منظور سازماندهی تعاملات مابین سیستمهای مجزا از یکدیگر می باشد.
در مقابل REST، پروتکل SOAP که مخفف واژگان Simple Object Access Protocol است قرار دارد که از طریق آن میتوان به رد و بدل دیتا از طریق شبکه در قالب وب سرویس های مختلفی با فرمت XML پرداخت.
API هم مخفف واژگان Application Programming Interface است که دربرگیرنده ی متدهایی برای ارتباط با سایر لایبرری ها یا اپلیکیشن ها است.
حال اگر این اصطلاحات در کنار یکدیگر قرار دهم و چیزی تحت عنوان RESTful API بسازم، منظورمان ساز و کارهایی برای ارتباط با سایر سرویس ها با استفاده از معماری خاصی است. معماری REST دارای یکسری ویژگیها است که شاخص ترین آنها عبارتند از:
- ثبات و یکنواختی این معماری در جای جای API
- عدم برخورداری از سشن در سمت سرور
- به کارگیری از کدهای وضعیت اچ تی تی پی
- استفاده از یو آر ال ها برای مشخص ساختن مسیرهای مد نظر
- اعمال کوئری ها در یو آر ال به جای هدر پروتکل اچ تی تی پی
با این تفاسیر، RESTful API ها به خدمت توسعه دهندگان وب آمدهاند تا فرایند توسعه ی وب، ایجاد تجربه ی کاربری بهتر، سهولت در استفاده از ای پی آی ها و نقل و انتقال دادهها از طریق پروتکل اچ تی تی پی را امکانپذیر سازند.
علاوه بر این، توجه داشته باشم که REST بیش از آنکه پروتکل باشد، یکسری راهنما، اصول و قواعدی است که با استفاده از آنها میتوانم به برقراری ارتباط مابین منابع مختلف بپردازم.
حال برای درک بهتر این موضوع، مثالی عملی می زنم. فرض کنم که قصد دارم از ای پی آی شبکه ی اجتماعی توییتر برای نشان دادن محبوبترین توییت ها در وب سایت خود استفاده کنم. در چنین شرایطی، ما بدون آن که دسترسی به سرور این شبکه ی اجتماعی داشته باشیم، قادر خواهیم بود تا دیتای مد نظر خود را گرفته و در معرض دید کاربرانمان قرار دهم. معمولاً سرویس هایی که API در اختیار توسعه دهندگان قرار می دهند، دیتای مد نظر را در فرمت JSON در اختیار آنها قرار میدهند البته برخی سرویس ها هم هستند که از فرمت XML استفاده می کنند.
آشنایی با مفاهیم third party (سوم شخص)
برنامه های شخص سوم (third party)، برنامه هایی هستند که برای کار درون سیستم عامل ها نوشته شده، اما به وسیله افراد یا شرکت ها به غیر از تولید کننده سیستم عامل نوشته میشوند. به عنوان مثال، سیستم های مایکروسافت به همراه بسته ای از چندین برنامه نرم افزاری می آیند. از اینها، هر برنامه ای که به وسیله مایکروسافت ایجاد شده باشد، یک برنامه شخص اول (first party) است. هر برنامه ای که به وسیله یک شرکت متفاوت یا یک فرد ایجاد شده باشد برنامه شخص سوم است؛ چنین چیزی در مورد سیستم های اپل و لینوکس نیز صادق است. در این معادله، شخص دوم (second party) کاربر است.
برنامه های شخص سوم میتوانند برنامه های مستقلی باشند یا می توانند پلاگین های کوچکی باشند که قابلیت هایی را به یک برنامه دیگر می افزایند. گروه پیشین بی پایان است. در یک سیستم معمولی، برنامه های شخص سوم مستقل شامل ده ها برنامه است. مرورگرهای وب همانند اپرا، سافاری و فایرفاکس و خدمات گیرنده های ایمیل همانند تاندربرد، !The Bat و Pegasus چند نمونه از برنامه های شخص سوم مستقل محبوب هستند. بیشتر برنامه های ضد ویروس، دیواره های آتش (firewallss)، برنامه های چند رسانه ای – در اصل هر برنامه ای که به وسیله مایکروسافت، اپل، یا لینوکس نوشته نشده باشد، و باز هم برای کار بر روی آن سیستم ها ساخته شده باشند – در این گروه قرار میگیرند. استفاده از یک برنامه شخص سوم، از لحاظ نظری درجه آسیب پذیری بالقوه را کاهش میدهد.
نوع متفاوتی از برنامه شخص سوم، قابلیت های اضافی را برای یک برنامه اصلی فراهم می کند. این نوع از برنامه های شخص سوم به عنوان پلاگین ها و افزونه ها شناخته می شوند. برنامه اصلی موجود خود ممکن است یک برنامه شخص سوم، یا یک برنامه شخص اول باشد. مثال ها عبارتند از پلاگین های رمزنگاری برای برنامه های ایمیل، پلاگین های چند رسانه ای برای مرورگرهای وب برای تماشای فیلم ها یا مشاهده محتوای فلش، یا پلاگین هایی که گونه های خاصی از فایل ها را میخوانند همچون پلاگین Adobe Acrobat مورد استفاده در مرورگرها برای خواندن فایل های pdf .
اگرچه پلاگین ها و افزونه ها برای برنامه های شخص اول نیز موجود هستند، اکثریت وسیعی برای نرم افزارهای متن باز (open source) نوشته میشوند. مایکروسافت و اپل کد منبع سیستم عامل های اختصاصی شان را در دسترس عموم قرار نمیدهند، و این توانایی یک شخص سوم برای نوشتن یک پلاگین یا افزونه را محدود میکند. بیشتر برنامه های شخص سوم نیز اختصاصی هستند، و یک شرکت کد منبع را به صورت محرمانه نگه میدارد.
هرچند، برنامه های شخص سوم بسیاری وجود دارند که متنباز هستند و این گروه از نرم افزارها در حال رشد است. مرورگر وب فایرفاکس و خدمات گیرنده ایمیل تاندربرد (Thunderbird) تنها دو نمونه از برنامه های شخص سوم منبع باز هستند که خیلی محبوب هستند. این محبوبیت ناشی از فهرست در حال رشد افزونه ها و پلاگین های مناسب و سودمند است که برای این برنامه ها به صورت رایگان موجود هستند. برنامه های شخص اول منبع باز، به استثنای سیستم عامل های لینوکس که یک استثناء را ایجاد می کنند، کمیاب هستند.
همگام سازی ویتایگر با نرم افزار شخص سوم (REST APIs)
REST API
از مزایای REST API ها ارسال و دریافت داده بر روی HTTP(s) از نرم افزار ویتایگر و یکپارچه سازی با نرم افزارهای شخص سوم می باشد. شما کاملا در انتخاب کتابخانه ای برنامه نویسی برای استفاده از API ها آزاد می باشید. برای کار کردن با REST API ها از طریق زبان های برنامه نویسی مختلف، Vtwsclib این امکان زا برای شما فراهم می سازد.
http://code.vtiger.com/vtiger/vtigercrm-...r/vtwsclib
بخش زیر جزئیات بیشتری در مورد API ها ارائه میدهد:
فرمت Request (درخواست)
HTTP - GET / POST
application/x-www-form-urlencoded
فرمت Response (پاسخ)
موفق
ناموفق
عملیات ورود
این فرایند دو مرحله ای شامل دریافت کد چالش (توکن) و تبادل اعتبار نامه ها ( رمز عبور و کلید دسترسی) می باشد. شما می تواند اطلاعات کلید دسترسی (accessKey ) را در بخش "تنظیمات پروفایل من" در رابط کاربری وب نرم افزار خود پیدا کنید.
کد چالش (Challenge)
پاسخ کد چالش
ورود (Login)
پاسخ (Response )
عملیات خروج (Logout)
عملیات لیست انواع (List Types)
عملیات واکشی اطلاعات (Describe)
عملیات ایجاد (Create)
عملیات بازیابی (Retrieve)
عملیات به روز رسانی (Update)
عملیات حذف (Delete)
عملیات کوئری (Query )
<QUERY>
فرمت :
<column_list> کاما لیست نام فیلد ها را از هم جدا می کند
<object> نام ماژول
<conditionals> <condition_operations> یا <in_clauses> یا <like_clauses> به وسیله عملگرهای and یا or از یکدیگر جدا می شوند و از چپ به راست پردازش می شوند. هیچ گروه بندی وجود ندارد، تمام این موارد عملگرهایی هستند که در براکت می باشند.
<condition_operations> <, >, <=, >=, =, !=
<in_clauses> in ()
<like_clauses> مانند sqlregex
<value_list> کاما لیست مقادیر را جدا می کند.
m, n مقادیر را به ترتیب برای تعیین انحراف و محدوده همگام سازی می کند.
محدودیت ها
• کوئری ها در حال حاضر محدود به یک شی (object) منحصر بفرد می باشند
• اتصالات(Joins) پشتیبانی نمی شوند
• کوئری همواره خروجی خود را تا حدود 100 رکورد محدود می کند، نرم افزار کلاینت می تواند از عملگر های محدودی برای دریافت رکوردهای مختلف استفاده کند.
عملیات همگام سازی (Sync)
عملیات گسترش بخش (Extend Session)