前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Retrofit实战笔记 | 简析官方API文档(结合示例代码)

Retrofit实战笔记 | 简析官方API文档(结合示例代码)

作者头像
凌川江雪
发布2019-06-14 10:07:15
9480
发布2019-06-14 10:07:15
举报
文章被收录于专栏:李蔚蓬的专栏李蔚蓬的专栏
  • 其思想,类似于ListView、RecycleView的适配器(负责把布局和数据进行整合,然后渲染出来)
  • 创建一个Client交给它,它会帮我们去调用请求网络;默认使用OkHttpClient;

官方文档简阅

  • Retrofit会自动把返回数据转换成Call<List<Repo>><List<Repo>>位置类型的值;例如:
代码语言:javascript
复制
@GET("user/{id}")
    Call<User> getUserInfoWithPath(@Path("id") int user_id);

<List<Repo>>对应的位置类型就是User, 所以上面这个Call方法 返回的就是一个User类型的实例; 所以省去了我们用Gson解析的步骤:

代码语言:javascript
复制
private Api api;
---
User user = api.getUserInfoWithPath(1).execute().body();
  • Call<List<Repo>>随后的listRepos是方法名, 由开发者自定义,如以上实例代码中的getUserInfoWithPath()
  • 再往后是@Path("user"), 这部分同注解("users/{user}/repos")中的{user}相对应, 指定的是通过什么字段去服务端Get 如示例代码中@GET("user/{id}")中的{id}就和@Path("id")相对应, 指定了方法getUserInfoWithPath()是通过id字段去服务端获取(GET)数据的, 例如User user = api.getUserInfoWithPath(1).execute().body();, 聚焦getUserInfoWithPath(1); 就是到服务端查询到id字段是1User类数据, 查到之后就返回到客户端, 转化成一个id字段为1User类实例; (也就是通过id字段去Get数据)
  • 再往后就是指定@Path("user")"user"数据类型了, 如以上String userint user_id

  • 定义完以上接口之后, 创建一个Retrofit类实例, 通过这个Retrofit实例创建一个方才定义的接口的代理实例 接口的代理实例编写语句类似于普通class的声明, 但是它事实上并不同于class声明那样子声明出一个实在的对象 而仅仅是一个接口代理对象(如下图的service)而已, 不是一个实实在在的接口对象 (我们知道接口一般是没有实例对象的)

  • 接着通过方才创建出来的接口代理实例去调用Call<List<Repo>>随后的由开发者自定义的请求方法listRepos方法, 如以上实例代码中的getUserInfoWithPath(); 即可:

然后返回结果;


以上可以归结为三个步骤,示例代码如下:

代码语言:javascript
复制
//1. 定义对应 HTTP API的 Java接口
public interface Api {
    @GET("user/{id}")
    Call<User> getUserInfoWithPath(@Path("id") int user_id);
}

---
private Api api;

---
//2. 创建 Retrofit实例,通过该实例创建接口代理实例
      Retrofit retrofit = new Retrofit.Builder()
              .baseUrl("http://192.168.1.189:5000/")
              .addConverterFactory(GsonConverterFactory.create())
              .build();

      api = retrofit.create(Api.class);

---
//3. 通过接口代理实例调用自定义的请求方法,得到返回结果
User user = api.getUserInfoWithPath(1).execute().body();

其他API文档

  • 关于请求方法:
  • manipulation 操作,操控;
  • 把一个User实例转换成json形式进行提交(Post)
  • 表单(form)形式提交:
  • 多种类型数据提交:
  • 添加请求头部:
  • Retrofit默认将HTTPbodies转化成OkHttpResponseBody 另外我们可以给Retrofit配置数据默认的转换框架 例如Gson(从这点看,Retrofit适配器):

参考自 菜鸟窝

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.06.08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 官方文档简阅
  • 其他API文档
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档