美文网首页Android开发Android开发经验谈Android技术知识
Retrofit实战笔记 | 简析官方API文档(结合示例代码)

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

作者: 凌川江雪 | 来源:发表于2019-06-08 04:33 被阅读9次
    • 其思想,类似于ListView、RecycleView的适配器(负责把布局和数据进行整合,然后渲染出来)
    • 创建一个Client交给它,它会帮我们去调用请求网络;默认使用OkHttpClient;

    官方文档简阅

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

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

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

    //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适配器):






    参考自 菜鸟窝

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/dbarxctx.html