Middle
Retrofit китепканасы менен тармактык суроолорду кантип ишке ашыруу керек?
sobes.tech AI
AIден жооп
-
Тийиштүү көзкаранды болгуза:
build.gradle(app) файлына.// Retrofit implementation 'com.squareup.retrofit2:retrofit:<latest_version>' implementation 'com.squareup.retrofit2:converter-gson:<latest_version>' // же башка конвертер -
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>- асинхрон же синхрон суроо үчүн кайтарылуучу түр.
-
Retrofit мисалын түзүү: Базалык URL түзүп, конвертер кошуу.
Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.example.com/") .addConverterFactory(GsonConverterFactory.create()) // JSON парсинг үчүн Gson колдонобуз .build(); ApiService apiService = retrofit.create(ApiService.class); -
Суроо жөнөтүү: Асинхрон же синхрон.
Асинхрон (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) { // Катаны иштетүү } -
Жоопту иштетүү:
onResponseметоддорунда жеexecuteийгиликтүү болгондон кийин. Жооптун абалын текшерүү (response.isSuccessful()) жана маалыматтарды алуу (response.body()). КаталардыonFailureжеcatchблокторунда иштетүү.
Retrofit ошондой эле корутиналар менен (retrofit2:retrofit2-kotlin-coroutines-adapter аркылуу), RxJava менен (retrofit2:adapter-rxjava аркылуу) жана башка асинхрон программалоо китепканалар менен интеграцияны колдойт.