Junior
Mis on Retrofit ja kuidas seda kasutatakse Android arenduses?
sobes.tech AI
Vastus AI-lt
Retrofit on tüübiturvaline klient HTTP-päringute jaoks Androidi ja Java jaoks. See lihtsustab suhtlust REST API-dega, kasutades annotatsioone päringute kirjeldamiseks.
Peamised eelised:
- Tüüpide turvalisus: Päringud ja vastused esitatakse Java (või Kotlin) objektidena, mis vähendab jooksva ajal vigu.
- Lihtne kasutamine: HTTP meetodite deklaratsioon annotatsioonide abil muudab koodi loetavamaks ja hooldatavamaks.
- Konfigureeritavus: Lihtne lisada interceptore logimiseks, autentimiseks ja muude ülesannete jaoks.
- Integreerimine konverteritega: Toetab erinevaid konvertereid vastuste analüüsimiseks (JSON, XML jne) otse kastist (näiteks Gson, Jackson).
Kasutamine:
-
Sõltuvuste lisamine:
// build.gradle (rakendustasand) dependencies { implementation 'com.squareup.retrofit2:retrofit:<latest_version>' // Valige oma andmete konverter (siin näide Gsoniga) implementation 'com.squareup.retrofit2:converter-gson:<latest_version>' } -
API liidese määratlemine: Looge Java/Kotlin liides, mis deklareerib kõik API endpoint'id annotatsioonidega.
// ApiService.java import retrofit2.Call; import retrofit2.http.GET; import retrofit2.http.Path; import java.util.List; public interface ApiService { @GET("users/{userId}") // GET päring URL-ile "users/{userId}" Call<User> getUser(@Path("userId") int userId); // @Path asendab väärtuse URL-is @GET("posts") // GET päring URL-ile "posts" Call<List<Post>> getPosts(); } // User.java (näidis POJO vastuse jaoks) public class User { private int id; private String name; // getterid ja setterid } // Post.java (näidis POJO vastuse jaoks) public class Post { private int id; private int userId; private String title; private String body; // getterid ja setterid } -
Retrofit eksemplari loomine:
// RetrofitClient.java import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory; public class RetrofitClient { private static final String BASE_URL = "https://api.example.com/"; // Teie API baas URL private static Retrofit retrofit; public static Retrofit getRetrofitInstance() { if (retrofit == null) { retrofit = new Retrofit.Builder() .baseUrl(BASE_URL) // Basi URL määramine .addConverterFactory(GsonConverterFactory.create()) // Konverteri lisamine .build(); } return retrofit; } public static ApiService getApiService() { return getRetrofitInstance().create(ApiService.class); // API teenuse eksemplar } } -
Päringute tegemine:
// Activity, Fragment või ViewModel import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; // ... ApiService apiService = RetrofitClient.getApiService(); // Asünkroonne päring kasutaja saamiseks ID järgi Call<User> userCall = apiService.getUser(1); userCall.enqueue(new Callback<User>() { // enqueue teostab asünkroonselt teises lõimes @Override public void onResponse(Call<User> call, Response<User> response) { if (response.isSuccessful() && response.body() != null) { User user = response.body(); // Töötle saadud user } else { // Töötle viga (nt response.code(), response.errorbody()) } } @Override public void onFailure(Call<User> call, Throwable t) { // Töötle võrguviga või muu erind t.printStackTrace(); } }); // Asünkroonne päring postituste loendi saamiseks Call<List<Post>> postsCall = apiService.getPosts(); postsCall.enqueue(new Callback<List<Post>>() { @Override public void onResponse(Call<List<Post>> call, Response<List<Post>> response) { if (response.isSuccessful() && response.body() != null) { List<Post> posts = response.body(); // Töötle postituste nimekiri } else { // Töötle viga } } @Override public void onFailure(Call<List<Post>> call, Throwable t) { // Töötle viga t.printStackTrace(); } });