Sobes.tech
Middle

Retrofit kitabxanası ilə şəbəkə sorğuları necə həyata keçirilir?

sobes.tech Süni İntellekt

AI-dan cavab

  1. Asılılığı əlavə et: build.gradle (app) faylında.

    // Retrofit
    implementation 'com.squareup.retrofit2:retrofit:<latest_version>'
    implementation 'com.squareup.retrofit2:converter-gson:<latest_version>' // və ya başqa bir konvertor
    
  2. API interfeysini yaradın: Hər bir şəbəkə sorğusu üçün metodları müəyyən edin.

    interface ApiService {
        @GET("users/{id}")
        Call<User> getUser(@Path("id") int userId);
    
        @POST("users")
        Call<User> createUser(@Body User user);
    }
    
    • @GET, @POST və digər annotasiyalar HTTP metodunun növünü müəyyən edir.
    • "users/{id}" - resurs üçün nisbi yol.
    • @Path, @Query, @Body - sorğu parametrləri üçün annotasiyalar.
    • Call<T> - asinxron və ya sinxron sorğular üçün dönüş tipi.
  3. Retrofit nümunəsini yaradın: Əsas URL-i konfiqurasiya edin və konvertoru əlavə edin.

    Retrofit retrofit = new Retrofit.Builder()
        .baseUrl("https://api.example.com/")
        .addConverterFactory(GsonConverterFactory.create()) // JSON-un parse edilməsi üçün Gson istifadə edin
        .build();
    
    ApiService apiService = retrofit.create(ApiService.class);
    
  4. Sorğu icra edin: Asinxron və ya sinxron.

    Asinxron (UI axını üçün tövsiyə olunur):

    Call<User> call = apiService.getUser(123);
    call.enqueue(new Callback<User>() {
        @Override
        public void onResponse(Call<User> call, Response<User> response) {
            if (response.isSuccessful()) {
                User user = response.body();
                // Uğurlu cavabı emal edin
            } else {
                // Xəta cavabını emal edin (məsələn, 404, 500)
            }
        }
    
        @Override
        public void onFailure(Call<User> call, Throwable t) {
            // Şəbəkə xətası və ya istisna emal edin
        }
    });
    

    Sinxron (UI axınında istifadə etməyin):

    try {
        Response<User> response = apiService.getUser(123).execute();
        if (response.isSuccessful()) {
            User user = response.body();
            // Uğurlu cavabı emal edin
        } else {
            // Xəta cavabını emal edin
        }
    } catch (IOException e) {
        // Xətanı emal edin
    }
    
  5. Cavabı emal edin: onResponse metodlarında və ya uğurlu execute sonrası. Cavabın statusunu yoxlayın (response.isSuccessful()) və məlumatları çıxarın (response.body()). Xətaları onFailure və ya catch bloklarında idarə edin.

Retrofit həmçinin korutinlərlə inteqrasiyanı dəstəkləyir (retrofit2:retrofit2-kotlin-coroutines-adapter), RxJava (retrofit2:adapter-rxjava) və digər asinxron proqramlaşdırma kitabxanaları ilə.