Retrofit使用

Retrofit是适用于AndroidJava且类型安全的HTTP客户端工具,在Github上已经有39k+Star。其最大的特性的是支持通过接口的方式发起HTTP请求,类似于我们用Feign调用微服务接口的那种方式。

SpringBoot是使用最广泛的Java开发框架,但是Retrofit官方并没有提供专门的Starter。于是有位老哥就开发了retrofit-spring-boot-starter,它实现了Retrofit与SpringBoot框架的快速整合,并且支持了诸多功能增强,极大简化开发。今天我们将使用这个第三方Starter来操作Retrofit。

使用

在SpringBoot中使用Retrofit是非常简单的,下面我们就来体验下。

依赖集成

有了第三方Starter的支持,集成Retrofit仅需一步,添加如下依赖即可。

<!--Retrofit依赖-->
<dependency>
    <groupId>com.github.lianjiatech</groupId>
    <artifactId>retrofit-spring-boot-starter</artifactId>
    <version>2.2.18</version>
</dependency>

配置

Retrofit的配置很多,下面我们讲讲日志打印、全局超时时间和全局请求重试这三种最常用的配置。

日志打印
  • 默认配置下Retrofit使用basic日志策略,打印的日志非常简单;

图片

  • 我们可以将application.yml中的retrofit.global-log-strategy属性修改为body来打印最全日志;

retrofit:
  # 日志打印配置
  log:
    # 启用日志打印
    enable: true
    # 日志打印拦截器
    logging-interceptor: com.github.lianjiatech.retrofit.spring.boot.interceptor.DefaultLoggingInterceptor
    # 全局日志打印级别
    global-log-level: info
    # 全局日志打印策略
    global-log-strategy: body
  • 修改日志打印策略后,日志信息更全面了;

图片

  • Retrofit支持四种日志打印策略;

    • NONE:不打印日志;

    • BASIC:只打印日志请求记录;

    • HEADERS:打印日志请求记录、请求和响应头信息;

    • BODY:打印日志请求记录、请求和响应头信息、请求和响应体信息。

全局超时时间

有时候我们需要修改一下Retrofit的请求超时时间,可以通过如下配置实现。

retrofit:
  # 全局连接超时时间
  global-connect-timeout-ms: 3000
  # 全局读取超时时间
  global-read-timeout-ms: 3000
  # 全局写入超时时间
  global-write-timeout-ms: 35000
  # 全局完整调用超时时间
  global-call-timeout-ms: 0
全局请求重试
  • retrofit-spring-boot-starter支持请求重试,可以通过如下配置实现。

retrofit:
  # 重试配置
  retry:
    # 是否启用全局重试
    enable-global-retry: true
    # 全局重试间隔时间
    global-interval-ms: 100
    # 全局最大重试次数
    global-max-retries: 2
    # 全局重试规则
    global-retry-rules:
      - response_status_not_2xx
      - occur_exception
    # 重试拦截器
    retry-interceptor: com.github.lianjiatech.retrofit.spring.boot.retry.DefaultRetryInterceptor
  • 重试规则global-retry-rules支持如下三种配置。

    • RESPONSE_STATUS_NOT_2XX:响应状态码不是2xx时执行重试;

    • OCCUR_IO_EXCEPTION:发生IO异常时执行重试;

    • OCCUR_EXCEPTION:发生任意异常时执行重试。

相关推荐

  1. Android retrofit使用模板

    2024-07-11 10:58:05       133 阅读
  2. <span style='color:red;'>Retrofit</span>

    Retrofit

    2024-07-11 10:58:05      28 阅读
  3. Android 使用 retrofit2 解析XML响应

    2024-07-11 10:58:05       54 阅读
  4. Android中Retrofit的学习和使用记录

    2024-07-11 10:58:05       24 阅读
  5. Android retrofit

    2024-07-11 10:58:05       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 10:58:05       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 10:58:05       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 10:58:05       58 阅读
  4. Python语言-面向对象

    2024-07-11 10:58:05       69 阅读

热门阅读

  1. 设计模式03-组合模式

    2024-07-11 10:58:05       22 阅读
  2. .net开发:NPOI生成excel文件到磁盘

    2024-07-11 10:58:05       25 阅读
  3. 应用TensorFlow简单工作流程

    2024-07-11 10:58:05       22 阅读
  4. 每个账号设置独立的cookie

    2024-07-11 10:58:05       24 阅读
  5. Jinja2模板引擎使用指南

    2024-07-11 10:58:05       29 阅读
  6. 如何做软件需求分析

    2024-07-11 10:58:05       21 阅读
  7. MySQL语句

    2024-07-11 10:58:05       17 阅读