Retrofit Call API

*Thư viện bắt buộc thêm

-GsonGitHub - google/gson: A Java serialization/deserialization library to convert Java Objects into JSON and back

-Retrofit and converterGsonRetrofit (square.github.io) 



*Thêm headers cho file config

Cách 1: Thêm header trong file config

Yêu cầu thêm thư viện OkHttp3 : Overview - OkHttp (square.github.io)

B1: Tại file config : Ta tạo 1 đối tượng Interceptor

private val interceptor : Interceptor = Interceptor {
val request: Request = it.request()
val builder: Request.Builder = request.newBuilder()
builder.header("X-RapidAPI-Key", "d93b80ace2msh93fceec6590d258p15679ajsnbf37f51d5cf7")
builder.header("X-RapidAPI-Host", "imdb8.p.rapidapi.com")
return@Interceptor it.proceed(builder.build())
}

B2: tạo một đối tượng của OkHttpClient.Builder

private val okBuilder: OkHttpClient.Builder = OkHttpClient.Builder().addInterceptor(interceptor)

B3: Thêm đối tượng của OkHttpClient.Builder vào Retrofit

private val builder = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(okBuilder.build())

val retrofit: Retrofit = builder.build()

Hoàn tất thêm Header vào URL: Tất cả các interface gọi Api này đều chung một header

* Cách viết khác để tạo ra 1 instance Retrofit

object RetrofitInstant {

private val retrofit by lazy {
Retrofit
.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
}

val api: NewsAPI by lazy {
retrofit.create(NewsAPI::class.java)
}

}

sự khác biết là sử dụng by lazy

Nhận xét