رتروفیت چیست؟
رتروفیت (Retrofit) کتابخانه ای بسیار قدرتمند جهت اتصال به سرور و ارتباط با API سمت سرور است در واقع یک نوع سرویس امن REST برای اندروید و جاوا است که هدف آن سهولت مصرف خدمات وب RESTful است. رتروفیت به طور خودکار پاسخ JSON را با استفاده از (POJO (Plain Old Java Object سریال می کند که برای ساختار JSON باید به صورت پیشرفته تعریف شود. رتروفیت توسط شرکت Square پشتیبانی میشود و مورد تایید گوگل است . در این مقاله ی الکامکو با یک مثال ساده و کاربردی با مفاهیم این کتابخانه بیشتر اشنا می شوید.
معرفی کتابخانه رتروفیت (Retrofit) :
اگر به کاربرد وب سرویس برای ارتباط یک اپلیکیشن اندرویدی با سرور فکر کنید، مثال های مختلفی به ذهنتان می رسد. از اپ های فروشگاهی گرفته تا سرویسها و بازیهای آنلاین که همگی نیازمند ارسال و دریافت دادهها از یک سرور در اینترنت هستند.
پیاده سازی قابلیت ارتباط بین سرور و اپلیکیشن به روش دستی و نوشتن کامل کدها بسیار پیچیده و زمانگیر بوده و همواره باید پارامترهای متعددی مانند ساخت کانکشن برای اتصال ، ارسال دوباره درخواستهای ناموفق ، تردها (Thread)، ارورها، Parse کردن پاسخ و… را خودمان مدیریت کنیم. بنابراین بهتر است سراغ کتابخانههایی برویم که توسط شرکتهای معتبر منتشر و پشتیبانی میشوند. کتابخانه Retrofit یکی از معروف ترین این کتابخانه ها می باشد.
به واسطه Retrofit ، یک ارتباط امن از نوع HTTP بین سرور و کلاینت (اپلیکیشن) برقرار میشود ، یعنی از رتروفیت برای اتصال به وب سرویس از طریق HTTP Connection استفاده می گردد.
کتابخانه والی (Volley) به عنوان رقیب اصلی Retrofit توسط گوگل پشتیبانی میشود. هم اکنون Retrofit به دلیل مزیت هایی که نسبت به Volley دارد در بین برنامه نویسان اندروید محبوبیت بیشتری دارد . نسخه ۲ کتابخانه Retrofit ، نسبت به نسخه ۱ تغییرات گسترده ای داشته که علاوه بر استفاده راحت تر ، نسبت به ورژن ۱ ، امکانات بیشتری نیز در اختیار شما قرار میدهد .
کار با کتابخانه رتروفیت (Retrofit) :
برای کار با Retrofit در اصل به سه کلاس زیر نیاز دارید:
- کلاس مدل که به عنوان یک مدل JSON استفاده می شود .
- رابط هایی که عملیات HTTP را تعریف می کنند .
- Retrofit.Builder class : نمونه ای که از رابط و API Builder استفاده می کند تا بتواند نقطه پایان URL را برای عملیات HTTP تعریف کند .
هر روش واسط یک تماس API ممکن را نشان می دهد . برای مشخص کردن نوع درخواست و URL نسبی باید حاوی HTTP (GET ، POST و غیره) باشد. مقدار بازگشت پاسخ را در یک شی تماس با نوع نتیجه مورد نظر پیچیده می کند.
@GET("users") Call<List<User>> getUsers();
برای تنظیم URL می توانید از بلوک های جایگزین و پارامترهای پرس و جو استفاده کنید. یک بلوک جایگزین با relative to به URL نسبی اضافه شده است. با کمک Path در پارامتر متد ، مقدار آن پارامتر به بلوک جایگزینی خاص محدود می شود.
@GET("users/{name}/commits")
Call<List<Commit>> getCommitsByName(@Path("name") String name);
پارامترهای پرس و جو با استفاده از Query نویسی در یک پارامتر متد اضافه می شوند. آنها به طور خودکار به انتهای URL اضافه می شوند.
@GET("users") Call<User> getUserById(@Query("id") Integer id);
در واقع Body در یک پارامتر متد به Retrofit می گوید تا از شیء به عنوان بدنه درخواست تماس استفاده کند.
@POST("users")
Call<User> postUser(@Body User user)
سوال دارید؟ می توانید زیر همین پست یا با مراجعه به صفحه انجمن برنامه نویسان اندروید الکامکو سوالات خود را مطرح کنید تا کارشناسان ما در اولین فرصت به آنها پاسخگو باشند.