Spring Boot 中的 RestTemplate不好用?试试 Retrofit!
Retrofit是适用于Android和Java且类型安全的HTTP客户端,其最大的特性的是支持通过接口的方式发起HTTP请求。而spring-boot是使用最广泛的Java开发框架,但是Retrofit官方没有支持与spring-boot框架快速整合,因此我们开发了retrofit-spring-boot-starter。
retrofit-spring-boot-starter
实现了Retrofit与spring-boot框架快速整合,并且支持了诸多功能增强,极大简化开发。
Github项目地址:https://github.com/LianjiaTech/retrofit-spring-boot-starter
Gitee项目地址:https://gitee.com/lianjiatech/retrofit-spring-boot-starter
示例demo:https://github.com/ismart-yuxi/retrofit-spring-boot-demo
功能特性
快速使用
引入依赖
<dependency>
<groupId>com.github.lianjiatech</groupId>
<artifactId>retrofit-spring-boot-starter</artifactId>
<version>2.2.6</version>
</dependency>
本项目依赖Retrofit-2.9.0,okhttp-3.14.9,okio-1.17.5版本,如果冲突,烦请手动引入相关jar包。完整依赖如下:
<dependency>
<groupId>com.github.lianjiatech</groupId>
<artifactId>retrofit-spring-boot-starter</artifactId>
<version>2.2.6</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>logging-interceptor</artifactId>
<version>3.14.9</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.14.9</version>
</dependency>
<dependency>
<groupId>com.squareup.okio</groupId>
<artifactId>okio</artifactId>
<version>1.17.5</version>
</dependency>
<dependency>
<groupId>com.squareup.retrofit2</groupId>
<artifactId>retrofit</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.squareup.retrofit2</groupId>
<artifactId>converter-jackson</artifactId>
<version>2.9.0</version>
</dependency>
定义http接口
接口必须使用@RetrofitClient
注解标记!http相关注解可参考官方文档:retrofit官方文档
@RetrofitClient(baseUrl = "${test.baseUrl}")
public interface HttpApi {
@GET("person")
Result<Person> getPerson(@Query("id") Long id);
}
友情提示:方法请求路径慎用
/
开头。对于Retrofit而言,如果baseUrl=http://localhost:8080/api/test/
,方法请求路径如果是person
,则该方法完整的请求路径是:http://localhost:8080/api/test/person
。而方法请求路径如果是/person
,则该方法完整的请求路径是:http://localhost:8080/person
注入使用
将接口注入到其它Service中即可使用!
@Service
public class TestService {
@Autowired
private HttpApi httpApi;
public void test() {
// 通过httpApi发起http请求
}
}
默认情况下,自动使用SpringBoot扫描路径进行
retrofitClient
注册。你也可以在配置类加上@RetrofitScan
手工指定扫描路径。
HTTP请求相关注解
HTTP请求相关注解,全部使用了retrofit原生注解。详细信息可参考官方文档:retrofit官方文档
注解分类 | 支持的注解 |
---|---|
请求方式 | @GET @HEAD @POST @PUT @DELETE @OPTIONS @HTTP |
请求头 | @Header @HeaderMap @Headers |
Query参数 | @Query @QueryMap @QueryName |
path参数 | @Path |
form-encoded参数 | @Field @FieldMap @FormUrlEncoded |
请求体 | @Body |
文件上传 | @Multipart @Part @PartMap |
url参数 | @Url |
配置项说明
retrofit-spring-boot-starter
支持了多个可配置的属性,用来应对不同的业务场景。详细信息可参考 配置项示例。
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/03/25/resttemplate-in-spring-boot-not-easy-to-use-try-retrofit/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论