Sobes.tech
Middle

როგორ შევასრულოთ ქსელური მოთხოვნები Retrofit ბიბლიოთეკის გამოყენებით?

sobes.tech AI

პასუხი AI-სგან

  1. დამატეთ დამოკიდებულება: build.gradle (app) ფაილში:

    // Retrofit
    implementation 'com.squareup.retrofit2:retrofit:<latest_version>'
    implementation 'com.squareup.retrofit2:converter-gson:<latest_version>' // ან სხვა კონვერტერი
    
  2. შექმენით API ინტერფეისი: განსაზღვრეთ მეთოდები თითოეული ქსელური მოთხოვნისთვის.

    interface ApiService {
        @GET("users/{id}")
        Call<User> getUser(@Path("id") int userId);
    
        @POST("users")
        Call<User> createUser(@Body User user);
    }
    
    • @GET, @POST და სხვა ანოტაციები განსაზღვრავენ HTTP მეთოდის ტიპს.
    • "users/{id}" - რელატიული გზა რესურსისკენ.
    • @Path, @Query, @Body - ანოტაციები მოთხოვნის პარამეტრებისთვის.
    • Call<T> - ტიპი, რომელიც აბრუნებს ასინქრონულ ან სინქრონულ მოთხოვნას.
  3. შექმენით Retrofit-ის მაგალითი: დააყენეთ ძირითადი URL და დაამატეთ კონვერტერი.

    Retrofit retrofit = new Retrofit.Builder()
        .baseUrl("https://api.example.com/")
        .addConverterFactory(GsonConverterFactory.create()) // ვიყენებთ Gson-ს JSON-ის ანალიზისთვის
        .build();
    
    ApiService apiService = retrofit.create(ApiService.class);
    
  4. გაგზავნეთ მოთხოვნა: ასინქრონულად ან სინქრონულად.

    ასინქრონულად (შეფერება UI ნაკადს):

    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();
                // წარმატებული პასუხის დამუშავება
            } else {
                // შეცდომის დამუშავება (მაგ. 404, 500)
            }
        }
    
        @Override
        public void onFailure(Call<User> call, Throwable t) {
            // ქსელის შეცდომა ან გამონაკლისი
        }
    });
    

    სინქრონულად (არ გამოიყენოთ UI ნაკადში):

    try {
        Response<User> response = apiService.getUser(123).execute();
        if (response.isSuccessful()) {
            User user = response.body();
            // წარმატებული პასუხის დამუშავება
        } else {
            // შეცდომის დამუშავება
        }
    } catch (IOException e) {
        // შეცდომის დამუშავება
    }
    
  5. პასუხის დამუშავება: onResponse ან execute-ის წარმატების შემდეგ. შემოწმეთ პასუხის სტატუსი (response.isSuccessful()) და მიიღეთ მონაცემები (response.body()). შეცდომები დამუშავეთ onFailure-ში ან catch-ში სინქრონული მოთხოვნის დროს.

Retrofit ასევე მხარს უჭერს კორუტინებთან ინტეგრაციას (retrofit2:retrofit2-kotlin-coroutines-adapter), RxJava-ს (retrofit2:adapter-rxjava) და სხვა ბიბლიოთეკებთან, რომლებიც უზრუნველყოფენ ასინქრონულ პროგრამირებას.