مقدمه ای برای استفاده از 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 تحویل میدهد.

     

    اطلاعات نویسنده
    • نویسنده: میثم بابائی

    ارسال دیدگاه

    برای افزودن دیدگاه خود، نیاز است ابتدا وارد حساب کاربری‌تان شوید


    دیدگاه کاربران