سلام به داداشا و آبجی های گلم، کیف احوال؟ تو این یه تیکه مقاله میخوام به سوال Retrofit چیست؟ جواب بدم. پس یه خورده دنبال کن حاجیتو ? تا ببین چی دارم برات بگم. ?حله.
آقا یه خیلی وقته که تمام اپ ها و بازی های به صورت آنلاین فعالیت میکنن، و تمام اون ها برای دریافت اطلاعات و ارسال اون با سرور ها ارتباط برقرار میکنند. یه نمونه ساده بهت بگم حاجی مثلا : دیدی میری اسنپ فود سفارش میدی یا پول رو آنلاین پرداخت میکنی برای این کارها نیاز به برقراری ارتباط دستگاه کاربر با سرور هست. واوو? خیلی خوب گفتم نه؟ برای حل این مشکل کتابخانه های زیادی ساخته شده که نمونه از این کتابخانه ها کتابخانه retrofit می باشد.
رترورفیت یک نوعی رست کلایت rest client امن برای جاوا و اندروید است. که کلمه Rest به اصطلاح انگلیسی Acronym یا به فارسی از سرکلمه Representational state transfer گرفتهاند. این خیلی کلمات زیاد که کوچیک شدش میشه rest یه معماری وب سرویس هست که میتواند از HTTP برای نقل و انتقال دیتا ها بین سرور و کاربر یا کلاینت استفاده کند.
باید بگم که یه سری کتابخونه مثل رتروفیت هست که میتونه ارتباط بین سرور و کلاینت رو برقرار کنه. ولی همه ی اونا به راحتی و سهولت نمیشه باهاشون کار کرد. یکی از معروف ترین اونا ها Volley هست که این کار رو میکنه یا یکی دیگه میشه okhttp که اون هم این کار رو میکنه. باور کنید که نمیخوام بهتون دروغ بگم در بعضی موارد استفاده از دیگر کتابخونه ها هم توصیه میشه اینو فقط من نمیگم. تو یه سری شرایط هست که بعضی از برنامه نویس های خوب توصیه کردند که بهتره از کتابخونه volley استفاده کنید. از مزیای که retrofit نسبت به دیگر کتابخونه های داره اینکه :
خیلیا میگن که سریع بودن کتابخانه retrofit به خاطر دریافت داده های دریافتی به صورت Modeling شده است. که نیاز به تغییر حالت جیسون از ارایه ای به ابجکت و غیره رو نداره. یا یه دلیل دیگهش اینکه کار با کش رو یه خورده متفاوت تر انجام میده. و این موارد باعث میشه روند دریافت داده سریع تر در کتابخانه رتروفیت انجام بشه.
منظور از عبارت Multipart request body یعنی اینکه شکل های مختلف پارامتر های ارسالی رو در درخواست رتروفیت داشته باشیم. مثلا GET, POST, PUT , DELETE , HEAD انواع مختلف درخواست ها می باشند. که در معنی به در خواست های چند پاره یا به اصطلاح Multipart request body گفته میشوند. تمامی این درخواست ها در کتابخانه Retrofit با استفاده از انوتیشن ها annotations قابل انجام هستند.
و دیگر ویژگی های که به راحتی در این کتابخانه قابل انجام می باشد مثل : authentication و Testing and Mocking و Pagination و Converts و response و …
این تکنولوژی یک نمونه معماری طراحی برای برنامه های کاربردی شبکه میباشد. که از ترکیب چند مدل معماری مبتنی بر شبکه است. ولی اگه بخوام یه خورده ساده تر بگم که جواب سوال rest چیست؟ اینه که بجای استفاده از تکنیک های پیچیده مثل soap یا corba یا rpc برای اتصال به پروتکل http استفاده میشه که برقراری ارتباط راحت تر شکل بگیره. این معماری باید برای کار کردن شرط را داشته باشه.
به سیستمی هم که این شرایط را داشته باشد Restfull گفته میشود. البته نیازی نیست شما بدونید که این ها اصلا چی هستند برای این که با restfull api ها کار کنید. و تمام موارد صرفا برای جزئیات بیشتر گفته شد. برای دونستن تمام جزئیات Rest full میتونید به این سایت مراجعه کنید.
نکته : از مواردی که بسیار حائز اهمیت برای سرویس های Rest می باشد این است که به هر شکل منابع را برای کلاینت ها فراهم نماید.