Retrofit注解

news2024/12/24 21:49:49

1. 注解类型

请添加图片描述

Retrofit路径结合的规则

2. 网络请求方法

2.1 Get请求

完整地址:http://mock-api.com/2vKVbXK8.mock/getUserInfo?id=userid

2.1.1 @Query

创建Retrofit实例必须传入baseurl(http://mock-api.com/2vKVbXK8.mock/),在@GET("getUserInfo")注解中的getUserInfo才是需要访问的地址。?后面的是需要传入的参数,使用@Query注解。

?形式拼接一个参数这种格式时,就使用@Query注解,该注解就是在getUserInfo后面添加?,并且以id=传来的参数userId的形式拼接url

private Retrofit retrofit;
retrofit = new Retrofit.Builder()
    .baseUrl("http://mock-api.com/2vKVbXK8.mock/")
    .addConverterFactory(GsonConverterFactory.create()) //返回的Json数据进行解析
    .build();

public interface GetApi {

    /**
     * 获取用户信息
     * @return
     * @Query 注解
     */
    @GET("getUserInfo")
    Call<UserInfo> getUserInfo(@Query("id") String userId);

}

# 2.1.2 @QueryMap

完整地址:http://mock-api.com/2vKVbXK8.mock/api/getArticalInfo?id=405&page=1

   @GET("api/getArticalInfo")
   fun getArticalInfo(@QueryMap params: Map<String, String>): Call<Info>

   val params = HashMap<String, String>()
   params.put("id", "321")
   params.put("page", "2")
   api.getArticalInfo(params).enqueue(object : Callback<Info> {
       override fun onResponse(call: Call<Info>, response: Response<Info>) {
           TODO("Not yet implemented")
       }

       override fun onFailure(call: Call<Info>, t: Throwable) {
           TODO("Not yet implemented")
       }

   })

也可以一个个传递参数

    @GET("api/getArticalInfo")
    fun getArticalInfoSp(@Query("id") id: String, @Query("page") page: String): Call<Info>

2.1.3 @Path

完整地址:

  1. http://mock-api.com/2vKVbXK8.mock/api/getDynamicInfo/1/data
  2. http://mock-api.com/2vKVbXK8.mock/api/getDynamicInfo/2/data

当要访问的地址由某个参数动态拼接而成时,使用@Path注解,实例中param这里具体填入的内容是后面调用该方法时传入的参数

    @GET("api/getDynamicInfo/{param}/data")
    fun getDynamicInfo(@Path("param") param: Int): Call<ResponseBody>

更改baseurl可以使用如下注解:

    @GET("{url}/api/rand.music")
    fun getJsonDataM(
        @Path(value = "url", encoded = true) url: String,
        @Query("sort") sort: String,
        @Query("format") format: String
    ): Call<Data<Info>>

//传入BaseUrl
  val callData = api.getJsonDataM("https://api.uomg.com/", "新歌榜", "json")

2.1.4 @Url

当要访问的地址不只是动态的变几个参数,而是整个地址都要变化,甚至是基类地址也要变化时,这种动态地址就要用到@Url注解。

    @GET
    fun getDynamicInfoUrl(@Url url: String): Call<ResponseBody>

2.1.5 @Headers(“”)

静态添加头部信息:包含添加单个头部、添加多个头部。通过@Headers(“”)注解,内部以key:value的方式填写内容

访问地址: http://mock-api.com/2vKVbXK8.mock/api/staticHeaderInfo

静态添加单个或多个头部

    @Headers("version:1.1")
    @GET("api/staticHeaderInfo")
    fun getStaticHeadersInfo()

    @Headers("version:1.1", "type:android")
    @GET("api/staticHeaderInfo")
    fun getStaticMoreHeadersInfo()

2.1.6 @Header

动态添加单个头部信息

    @GET("api/dynamicHeadersInfo")
    fun getDynamicHeaderInfo(@Header("version") version: String?): Call<ResponseBody?>?

2.1.7 @HeaderMap

动态添加多个头部信息, 使用方法和QueryMap一样。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/705336.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android跨平台语言分析

跨平台技术发展的三个阶段 第一阶段是混合开发的web容器时代 为了解决原生开发的高成本、低效率&#xff0c;出现了Hybrid混合开发原生中嵌入依托于浏览器的WebViewWeb浏览器中可以实现的需求在WebView中基本都可以实现但是Web最大的问题是&#xff0c;它的性能和体验与原生开发…

Mybatis面试题--MyBatis执行流程

首先我们知道Mybatis是目前最流行的持久层框架&#xff0c;当我们了解了执行流程&#xff0c;可以让我们理解各个组件的关系&#xff0c;以及Sql的执行过程&#xff08;参数映射、sql解析、执行和结果处理&#xff09; 1首先我们需要读取框架的核心配置文件 2接下来我们就要去操…

chatgpt赋能python:Python编程的好玩儿之处:介绍几个有趣的Python程序

Python编程的好玩儿之处&#xff1a;介绍几个有趣的Python程序 Python已经成为了一种非常受欢迎的编程语言&#xff0c;除了其在Web开发和数据科学领域的应用&#xff0c;它还能够完成很多好玩儿的事情&#xff01;接下来&#xff0c;我将介绍几个有趣的Python程序&#xff0c…

【零基础入门学习Python---Python多线程和多进程】

&#x1f680; Python &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

基于SpringBoot+vue前后端分离的相机销售系统

文章目录 项目介绍主要功能截图&#xff1a;首页相机详情个人中心 部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;Java韩立 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你…

Centos7.9 磁盘分区、挂载

常用命令&#xff1a; fdisk /dev/vdb 创建分区 mkfs.ext2 /dev/vdb3 文件系统&#xff08;ext2&#xff0c;ext4&#xff0c;xfs&#xff09;格式化 mkfs.ext4 /dev/vdb3 mkfs.xfs /dev/vdb3 df -T 命令查看格式化是否成功&#xff08;要先把分区挂载到目录&#xff0c;否则df…

18. WebGPU 计算着色器

本文接续基础知识文章。我们将从一些基本的计算着色器开始&#xff0c;然后希望继续讨论解决现实世界问题并写一些示例。 在上一篇文章中&#xff0c;制作了一个非常简单的计算着色器&#xff0c;可以将数字加倍。 这是着色器 group(0) binding(0) var<storage, read_wri…

Java安装

Java Downloads | Oracle 一直往下拉 配置环境变量 第二部分&#xff1a;idea旗舰版下载安装配置 1. 字号 file-settings-editor-font-23 &#xff0c;还有菜单字号

边坡变形监测主要用到哪些仪器

在建筑行业中&#xff0c;边坡安全问题一直备受关注&#xff0c;尤其是在地质灾害频发地区。为了预防和控制边坡失稳&#xff0c;降低对人民生命财产的危害&#xff0c;保障工程建设的顺利进行&#xff0c;边坡变形监测工作就显得尤为的重要。边坡变形监测仪器可以实时动态监测…

GSM模块(SIM900)详解

GSM模块&#xff08;SIM900&#xff09; 0. GSM概述1. 常用的GSM模块2. SIM900系列3. STM32使用SIM900系列通信方法AT指令示例代码 0. GSM概述 GSM&#xff08;全球系统移动通信&#xff09;是一种数字移动通信技术&#xff0c;是世界上最常用的移动通信标准之一。它是由欧洲电…

[Unity][疑难杂症]Mac电脑打开工程unity attempt to write a readonly database

报错的根本原因&#xff1a; 你Unity项目所在的硬盘&#xff0c;格式不是MacOS或者APFS格式&#xff0c;我的是ExFAT所以报这个错。 可能出现的问题&#xff1a; 1、删除unity项目中的c#之类的文件就会报错&#xff0c;并且强制退出 2、新项目压根打不开&#xff0c;在生成资源…

【学习笔记】Unity基础(九)【cinemachine基础(body、aim参数详解)】(多fig动图示范)

目录 一 速览1.1 cinemachine下载1.2 官方示例速览1.3 cinemachine定义 二 cinemachine详解2.1 Virtual Camera2.1.1 virtual camera参数通览2.1.2 Status2.1.3 有关Dutch angle2.1.4 Standby Update2.1.5 Transitions 2.2 virtual cameral关键参数详解2.2.1 Body2.2.1.1 Do No…

idea搭建springmvc

Spring MVC是一种基于MVC模式的框架&#xff0c;它是Spring框架的一部分。它提供了一种更简单和更有效的方式来构建Web应用程序。它提供了一系列的功能&#xff0c;可以帮助您更快地构建Web应用程序&#xff0c;如控制器&#xff0c;视图&#xff0c;模型&#xff0c;数据绑定&…

【数据挖掘】时间序列模型处理指南(二)

一、说明 本文是一个系列文章的第二部分&#xff0c;本文将用股票数据进行时间序列分析为例&#xff0c;对时间分析的方法、过程&#xff0c;进行详细阐述。 二、前文章节 在文章第一部分种&#xff1a;【数据挖掘】时间序列模型处理&#xff08;一&#xff09;_无水先生的博客…

Spring Boot中的@EnableWebSocketMessageBroker注解是什么,原理,以及如何使用

Spring Boot中的EnableWebSocketMessageBroker注解是什么&#xff0c;原理&#xff0c;以及如何使用 WebSocket是一种在Web浏览器和Web服务器之间进行双向通信的技术。在传统的HTTP通信中&#xff0c;客户端向服务器发送请求&#xff0c;服务器响应请求&#xff0c;然后关闭连…

黑马Java项目实战-瑞吉外卖-笔记01

视频地址&#xff1a;黑马程序员Java项目实战《瑞吉外卖》&#xff0c;轻松掌握springboot mybatis plus开发核心技术的真java实战项目_哔哩哔哩_bilibili资料下载&#xff1a;百度网盘【黑马程序员-Java瑞吉外卖-企业级项目实战-平台实战开发】 黑马Java项目实战-瑞吉外卖-笔…

PHP表单传值和文件上传:深入解析数据交互与文件处理技术

目录 表单传值 为什么要表单传值&#xff1f; 表单传值的方式 GET传值 POST传值 GET和POST两种传参方式的不同&#xff1a; PHP接受数据的三种方式 PHP处理复选框数据 复选框表单的命名方式 复选框数据的接受形式 复选框数据的常见处理 复选框细节&#xff1a; 文件…

区块链技术如何改变Web3认证的现状?

随着加密货币和区块链技术的迅猛发展&#xff0c;Web3钱包成为了数字经济时代中的重要组成部分。Web3钱包是一种工具&#xff0c;用于存储、管理和交互加密货币及其他数字资产&#xff0c;以及与去中心化应用程序&#xff08;DApp&#xff09;进行交互。它们是实现Web3.0理念的…

chatgpt赋能python:标题:免费的Python编辑器:优秀的编程工具免费获取

标题&#xff1a;免费的Python编辑器&#xff1a;优秀的编程工具免费获取 Python是一种高级编程语言&#xff0c;被广泛应用于数据科学、机器学习、Web开发和科学计算等领域。Python编程简单易学&#xff0c;更重要的是它的灵活性和扩展性&#xff0c;吸引了越来越多的开发者加…

自适应混沌粒子群算法(Matlab)

在上一个博客中作者介绍了标准粒子群及其实现&#xff0c;并给出了许多改进方向&#xff0c;那么从这一期开始就会陆续更新关于粒子群的改进&#xff0c;这一期的改进主要有三个方向&#xff0c;1.混沌初始化粒子群 2 非线性调整惯性权重 3 学习因子动态变化。 下面将对这些改进…