مقدمه ای برای استفاده از Retrofit
مقدمه ای برای استفاده از Retrofit

 

برای این که داده هایی را از دیتابیس سرور در اپلیکیشن  اندروید نمایش بدهیم نیاز هست که به سرور متصل شویم و داده های مورد نظر خود را بگیریم.

Retrofitکتابخانه ای است که انجام درخواست هایAPIرا بسیار ساده تر می کند.

RetrofitیکClient Type Safe RESTبرایAndroid  است که توسط شرکتsquareساخته شده است.

Retrofitبرای درخواستHTTPاز کتابخانهokHttpاستفاده می کند.

Retrofitیکی از بهترین ابزارهایی است که برای انجام درخواست به سرور در برنامه های اندرویدی استفاده میشود.

Retrofitبه سه مورد زیر نیاز دارد:

  1. Retrofit Instance

ما می توانیم نمونه ای ازRetrofitرا توسط کلاسRetrofit.Builderایجاد کنیم.

ما بایدBaseurlوconverter factoryرا در زمان ایجاد نمونهRetrofitمشخص کنیم

 

مثال:

val retrofit = Retrofit.Builder().baseUrl("www.bugeto.net/api/")
    .addConverterFactory(GsonConverterFactory.create())
    .build()

 

  1. Modelو Class

Retrofitبرای ارسال و دریافت درخواست به یک کلاسPOJOنیاز دارد.

Retrofitاز کلاسPOJOبرایparseکردن پاسخ سرور با استفاده از مبدل هایی مانندGson،Jackson،Moshiو غیره استفاده می کند.

 

مثال:

class Contact(
    @SerializedName("name")
    var Name:String,
    @SerializedName("email")
    var Email:String
)

 

  1. 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تحویل میدهد.

 

جدیدترین ویدئوهای آموزشی

در بخش TV باگتو، آموزش های کوتاه و جدید را مشاهده نمایید

0 نظرات

برای ارسال نظر باید وارد حساب کاربری خود شوید
ورود به حساب کاربری ثبت نام

بیش از 50% تخفیف به مناسبت جمعه سیاه
فقط تا پایان امروز