Spring boot中使用Retrofit拦截器增加日志打印功能
目前存在的问题
Retrofit是个封装良好的基于OKHTTP的框架,我们可以方便的使用Retrofit来调用API。那么应该如何优雅的使用Retrofit来调用API呢?
一、Retrofit如何添加拦截器
Retrofit本身不能添加拦截器,但是OKHTTP客户端是可以添加拦截器的。那么我们只需要先定义一个OKHTTP客户端,然后在创建Retrofit的时候把客户端加进去就可以了
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(resSyncConfig.getUrl())
.client(getClient().build())
.addConverterFactory(GsonConverterFactory.create())
.build();
二、添加拦截器代码
上面提到,我们需要在OkHttp客户端里面添加拦截器,来实现打印日志的功能。
/**
* 获取OKHttp客户端,用于为Retrofit添加拦截器
*
* @return OKHttp客户端
*/
private OkHttpClient.Builder getClient() {
OkHttpClient.Builder httpClientBuilder = new OkHttpClient.Builder();
httpClientBuilder.addNetworkInterceptor(chain -> {
Request original = chain.request();
log.info("{},headers:{}", original.toString(), original.headers());
return chain.proceed(original);
});
return httpClientBuilder;
}