Renovate - preview

对象式Http网络请求框架

背景及面向对象思想

用过Retrofit的知道,Retrofit是一个将http请求,表现成高级语言的接口(Interface),抽象成API的规范的优秀思想的Http框架,只暴露出了我们业务中的数据模型和操作方法。

然而什么是面向对象?Renovate如何运用这个思想?

“面向对象”是专指在程序设计中采用封装、继承、多态和抽象等设计方法。百度百科

对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。百度百科

Renovate重新定义了Http请求的方式,抽象出Http的请求为对象,采用了基于对象的注解和配置,对Http接口进行请求

Renovate是封装了OKHttp和标准RESTful风格的网络框架,只要配置好对象的,就能轻松的进行网络请求。

Renovate 目前支持

  • 支持 GET, HEAD, DELETE,PUT,PATCH,OPTIONS,POST等请求方式
  • 比Retrofit更简单方便
  • 文件上传
  • 支持RxJava函数式相应编程(强烈推荐使用)
  • 自适应Java平台和Android平台(Android平台回调在主线程中执行)
  • 使用过Retrofit的接入到Renovate学习成本低

下载及使用

Renovate

下载 [最新版本][2] 或者通过Maven:

<dependency><groupId>renovate2</groupId><artifactId>renovate</artifactId><version>0.2</version><type>pom</type>
</dependency>

还可以通过 Gradle:

compile 'renovate2:renovate:0.2'

Renovare 至少需要Java 7 和Android 2.3.

RX-Renovate(需要使用RxJava需要这个版本)

下载 [最新版本][3] 或者通过Maven:

<dependency><groupId>renovate2</groupId><artifactId>rx-renovate</artifactId><version>0.2</version><type>pom</type>
</dependency>

还可以通过 Gradle:

compile 'renovate2:rx-renovate:0.2'

如果需要在Android平台上进行使用,需要添加rxandroid

目前支持的是rxjava 1.2.0,后续版本将增强至rxjava2

Maven:

<dependency><groupId>io.reactivex</groupId><artifactId>rxandroid</artifactId><version>1.2.1</version><packaging>aar</packaging>
</dependency>

Gradle:

compile 'io.reactivex:rxandroid:1.2.1'

Examples

e.g

比如你有一个登录的实体,长得下面的样子:

@HTTP(method = HTTP.Method.POST, path = "api/member/login")
@FormUrlEncoded
public class Login  {@Params(value = "mobile") //如果不写,参数名将是字段名public String mobile;//帐号@Params(value = "password")public String password; //密码public String getMobile() {return mobile;}public void setMobile(String mobile) {this.mobile = mobile;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}

当中的@Http是必须要的,而Post请求中如果没有文件等要上传,只是表单则需要添加@FormUrlEncoded

好了,一个简单的http请求的对象化已经实现完成。接下来我们就要进行请求了

    @Testpublic void testConvert() throws InterruptedException {final CountDownLatch countDownLatch = new CountDownLatch(1);//用于junit测试Login p = new Login();p.mobile = "133xxxxxxxx";//设置请求的电话号码p.password = "password";//当然这是密码System.out.println("current thread = " + Thread.currentThread().getName());//显示的是当前的线程,Android上的话,就是主线程了Renovate renovate = new Renovate.Builder().baseUrl("http://localhost:8080/").build();renovate.request(p).request().enqueue(new Callback<ResponseBody>() { //异步请求@Overridepublic void onResponse(Call call, Response response) {print(response);//打印返回信息//也是主线程System.out.println("response thread = " + Thread.currentThread().getName());countDownLatch.countDown();}@Overridepublic void onFailure(Call call, Throwable t) {t.printStackTrace();countDownLatch.countDown();}});countDownLatch.await();System.out.println("end");}

So easy,一个简单的登录就完成了。当然了,功能不仅仅是这样子,如果要做更多的事情呢。
比如:

  • 结合Rxjava,实现函数式响应编程
  • 请求当中有个对象序列化成对象请求
  • 对返回的Json自动解析成想要的对象
  • 取消请求
  • 上传多个文件
  • 实现其他的请求方式,例如GET, HEAD, DELETE,PUT,PATCH,OPTIONS
  • 添加请求头部

本片文档来自:最全的ADSL拨号服务器,www.117idc.com

希望大家能够提供宝贵意见和建议,更好的维护这个产品

Contact me

  • 邮箱地址:babyte185@163.com
  • QQ:243107006

License

Renovate is released under the Apache 2.0 license.

Copyright 2017 Sirius Inc.Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Renovate - preview相关推荐

  1. 虚幻引擎的数学知识学习教程 Math for Unreal Engine (Early Preview)

    通过做真实世界的 Unreal Engine项目来学习数学 你会学到什么 理解游戏开发对数学的基本需求 将数学直接应用到用例中,而不是钻研理论(用我们的示例项目进行实践) 正确编辑短视频,节省您的时间 ...

  2. Windows 8.1 Preview(Windows Blue)预览版简体中文官方下载(ISO完整版镜像)

    Windows 8.1是微软继Windows 8以来的又一全新力作,又名Windows Blue(视窗蓝,专注蓝屏30年),个人觉得Win8还是比较流畅的但大众始终觉得还是有很多需要改进或者改善的,如 ...

  3. Visual Studio 15.8 Preview 3支持多点编辑功能

    Microsoft持续推进Visual Studio 2017的开发.在15.8的最新预览版(Preview 3)中,展示了将使大部分开发人员受益的一些重要新特性.其中一些有助于Visual Stud ...

  4. Mozilla Labs Apps Developer Preview发布了

    本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2012/01/mozilla-labs-apps-dev-preview 近日,Moz ...

  5. PostgreSQL 10.0 preview 功能增强 - 后台运行(pg_background)

    标签 PostgreSQL , 10.0 , 后台运行 , pg_background_launch , pg_background_result , pg_background_detach , p ...

  6. .NET Core 2.0 Preview 2为开发人员带来改进

    Microsoft发布了.NET Core 2第二个预览版(Preview 2),该版本可用于Mac OS X.Linux和Windows平台.Preview 2首次给出了对所有平台上各种软件包和安装 ...

  7. Windows 10 Technical Preview 安装体验及变化

    Windows 10 Technical  Preview  安装及最新变化 2014.10.1零晨,微软官方发布了windows 10技术预览版,下载体验一番,与大家分享一下使用心得. Window ...

  8. Eclipse ADT 21 Preview 10 发布

    Preview 10 只是一个 bugfix 版本,另外还包含一个改进内容中没提及的内容:21 Preview 10 和 SDK 工具完全支持使用 MIPS 核心的 Android 设备,跟支持 AR ...

  9. android 布局preview 技巧

    最近开始看老外写的文章,博客,嗯,不能说比国人写的好,但是感觉看着很爽.真的,一手资料就是爽. 嗯,自己做得不错,第一次看外文博客,我知道自己怎么看的,一句话一句话看下来的,越看越有感觉. 下面这个 ...

  10. 【转载】[Windows 8]Hello Windows 8 - Windows 8 Developer Preview搶先預覽

    [Windows 8]Hello Windows 8 - Windows 8 Developer Preview搶先預覽 隨著微軟Build Windows 2011大會的結束,微軟送給了大家一個超級 ...

最新文章

  1. Grails里DOMAIN类的一对一,一对多,多对多关系总结及集成测试
  2. C++中map容器的说明和使用技巧
  3. DotNetNuke: System.Security.Cryptography.CryptographicException: Bad Data
  4. WordCount by C# 结对编程
  5. Linux浏览文件的常用命令
  6. 01背包问题从简单到复杂
  7. SAP Spartacus B2B User 页面的数据读取逻辑设计
  8. 20155320《网络对抗》Exp4 恶意代码分析
  9. python canopen_Python canopener包_程序模块 - PyPI - Python中文网
  10. 深入理解Java 虚拟机
  11. 探索“云计算”的双重含义(节选)
  12. xUtils3 联网模块
  13. 拍照尺寸 ios_即将收费!11款价值80元iOS限免应用,全部免费下载
  14. Java数据结构与算法之堆排序
  15. 微信小程序使用iconfont图标
  16. 解决IE兼容H5的问题
  17. 网易微专业python全栈工程师_Python 的工作已经饱和?那是因为你只会 Python
  18. YOLOv4论文解读
  19. k8s简单集群搭建和应用(包括虚拟机的开启)①
  20. Python凯撒密码解密

热门文章

  1. Turtle 画正方形螺旋线
  2. R语言小代码(聚类练习)
  3. 鸡啄米教程之VS2010/MFC编程入门教程之目录和总结
  4. 网络控制播放器(局域网内通过TCP和UDP控制视频播放器)
  5. 字符串拼接用逗号隔开的四种方法
  6. Kubernetes 安全容器技术 kata gvisor
  7. 如何保存你的登录密码
  8. c# 路径下的最近文件夹_C# 添加Word水印(文本水印、图片水印)
  9. ME3616-OPENCPU完整调试笔记
  10. vue3 组件naiveui报错: Extraneous non-props attributes (class) were passed to component but could not be