برای این که داده هایی را از دیتابیس سرور در اپلیکیشن اندروید نمایش بدهیم نیاز هست که به سرور متصل شویم و داده های مورد نظر خود را بگیریم.
Retrofit کتابخانه ای است که انجام درخواست های API را بسیار ساده تر می کند.
Retrofit یک Client Type Safe REST برای Android است که توسط شرکت square ساخته شده است.
Retrofit برای درخواست HTTP از کتابخانه okHttp استفاده می کند.
Retrofit یکی از بهترین ابزارهایی است که برای انجام درخواست به سرور در برنامه های اندرویدی استفاده میشود.
Retrofit به سه مورد زیر نیاز دارد:
- Retrofit Instance
ما می توانیم نمونه ای از Retrofit را توسط کلاس Retrofit.Builder ایجاد کنیم.
ما باید Baseurl و converter factory را در زمان ایجاد نمونه Retrofit مشخص کنیم
مثال:
val retrofit = Retrofit.Builder().baseUrl("www.bugeto.net/api/")
.addConverterFactory(GsonConverterFactory.create())
.build()
- Model و Class
Retrofit برای ارسال و دریافت درخواست به یک کلاس POJO نیاز دارد.
Retrofit از کلاس POJO برای parse کردن پاسخ سرور با استفاده از مبدل هایی مانند Gson ، Jackson ، Moshi و غیره استفاده می کند.
مثال:
class Contact(
@SerializedName("name")
var Name:String,
@SerializedName("email")
var Email:String
)
- An Interface for possible Api calls
Interface شامل متد هایی است که برای ارتباط باapi های موجود است.
هر متد به annotation پایان آدرس api نیاز دارد که بیانگر متد های Http مانند GET و POST وغیره است.
نوع برگشتی هریک از این متد ها نمونه ای از کلاس Call رتروفیت است.
مثال:
interface ApiService {
@POST("contact")
fun getContacts(): Call<List<Contact?>?>?
}
نحوه ارسال درخواست
برای ارسال درخواست باید یک نمونه از interface را با فراخوانی متد create() از Retrofit Inctance بدست آوریم.
با استفاده از نمونه interfae میتوانیم از طریق متد های آن با Api مورد نظر ارتباط برقرار کنیم.
val apiService: ApiService = ApiClient.getApiClient().create(ApiService::class.java)
val call: Call<List<Contact>> = apiService.getContacts()
call.enqueue(object : Callback<List<Contact?>?> {
override fun onResponse(
call: Call<List<Contact?>?>,
response: Response<List<Contact?>?>
) {
//handle Response here
}
override fun onFailure(
call: Call<List<Contact?>?>,
t: Throwable
) {
//handle error here
}
})
Retrofit درخواست را به سمت سرور ارسال میکند و منتظر پاسخ میماند این کار را در تِرِد بک گراند انجام میدهد ونتیجه در خواست را به متد های onResponse() و onFailure() در تِرِد Main تحویل میدهد.
برای افزودن دیدگاه خود، نیاز است ابتدا وارد حساب کاربریتان شوید