【Spring Boot】3.1 Retrofit 的使用

马正初
2023-12-01

在pom.xml中加入启动器

        <!-- 引入retrofit依赖 -->
        <dependency>
            <groupId>com.github.lianjiatech</groupId>
            <artifactId>retrofit-spring-boot-starter</artifactId>
            <version>2.3.5</version>
        </dependency>

        <!-- 引入retrofit依赖 没有此包 retrofit starter 会启动失败 -->
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>3.14.9</version>
        </dependency>

在application.propertices中做简单配置

## Retrofit

retrofit.global-log.enable=true
retrofit.global-log.log-level=info

其作用就是显示日志,正式发版前可以去掉

在启动类中加入接口扫描注解

@RetrofitScan("cn.xxx.xxx")

可以传入数组,指定多个包位置

在指定存放接口的包里创建接口文件

import com.github.lianjiatech.retrofit.spring.boot.core.RetrofitClient;
import org.springframework.stereotype.Component;
import retrofit2.http.GET;

/**
 * Retrofit 配置完成测试接口
 */

@Component
@RetrofitClient(baseUrl = "http://127.0.0.1:8088/xxx/")
public interface TestApi {

    @GET("testApi/getNormal")
    Result getNormal();
}

在Service层中调用接口即可

Result result = testApi.getNormal();

一些常用的注解

定义接口方法请求 所使用的 Method 常用的也就是如下四种 符合 RestFul Style

@GET Get方式 获取 read
@POST Post方式 添加 create
@PUT Put 方式 更新 update
@DELETE Delete 方式 删除 delete

通常用来定义参数的类型

@Query 主要用于Get请求数据,用于拼接在拼接在Url路径后面的查询参数,一个@Query相当于拼接一个参数,多个参数中间用,隔开。
@QueryMap 可以传入一个 HashMap 主要的效果等同于多个@Query参数拼接,主要也用于Get请求网络数据。
@Field 类似于@Query,主要不同的是@Field主要用于Post请求数据。
@FieldMap 类似于@QueryMap。

上面四种的主要区别在于使用的请求 Query类的键值是拼接在URL后面 Field类的键值是存放在请求体中

@FormUrlEncoded 为POST方法指定编码 @Field parameters can only be used with form encoding.
@Path 主要用于Get请求,用于替换Url路径中的变量字符。

// 使用样例
@GET(“users/{user}/question”)
Call<List> getData(@Path(“user”) String user);}
@Url 动态URL请求(该注解会将方法的全部URL替换掉)

 类似资料: