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

  • 其思想,类似于ListView、RecycleView的适配器(负责把布局和数据进行整合,然后渲染出来)
  • 创建一个Client交给它,它会帮我们去调用请求网络;默认使用OkHttpClient;

官方文档简阅

9125154-7ab06a508c448440.png
  • Retrofit会自动把返回数据转换成Call<List<Repo>><List<Repo>>位置类型的值;例如:
@GET("user/{id}")
    Call<User> getUserInfoWithPath(@Path("id") int user_id);

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

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)而已,
    不是一个实实在在的接口对象
    (我们知道接口一般是没有实例对象的)
9125154-a44c72e9fe0a87b6.png

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

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

//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文档

  • 关于请求方法:

    9125154-38b8fb65f56226e8.png

  • manipulation 操作,操控;

    9125154-21fabd3033979548.png

  • 把一个User实例转换成json形式进行提交(Post)

    9125154-4149062ab924838e.png

  • 表单(form)形式提交:

    9125154-9566f006468b02ae.png

  • 多种类型数据提交:
    9125154-f40768a799808b6b.png
  • 添加请求头部:
    9125154-7ebfb328250dcd73.png
  • Retrofit默认将HTTPbodies转化成OkHttpResponseBody
    另外我们可以给Retrofit配置数据默认的转换框架
    例如Gson(从这点看,Retrofit适配器):

    9125154-f3d816e6f10a344c.png
    9125154-cb802e308390297f.png







参考自 菜鸟窝

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌川江雪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值