Retrofit Retrofit是一个可以把 REST API定义成接口的HTTP客户端。用它可以轻松简洁的管理请求 Header, Body和参数。...Retrofit也支持同步和异步调用 interface ApiService { @GET("movie/{id}") fun getMovieDetails(@Path("id") id:...String) : Call } 当然它也支持Rx,如果你习惯用RxJava的话它也可以提供同样的链式调用。...ORM是以面向对象的思路来处理数据/数据库的一种技术。Room提供跟Retrofit类似的完美的API接口。同时它也依赖注解和标准SQL语法。...RxJava RxJava是 ReactiveX API的一个Java实现,它用链式调用的方式代替了原有Java的编程思维。
Rx是响应式编程的意思, 本质是观察者模式, 是以观察者(Observer)和订阅者(Subscriber)为基础的异步响应方式....from从里面拿出每一个,调用flatmap将数据再次包裹起来,变换后再次进入filter进入过滤条件,过滤条件有前后顺序, flatMap 将里面的元素进行每个重新包装,再次作为一个被观察者发送出去。...Retrofit 除了提供了传统的 Callback 形式的 API,还有 RxJava 版本的 Observable 形式 API。...下面我用对比的方式来介绍 Retrofit 的 RxJava 版 API 和传统版本的区别。 以获取一个 User 对象的接口作为例子。...当 RxJava 形式的时候,Retrofit 把请求封装进 Observable ,在请求结束后调用 onNext() 或在请求失败后调用 onError()。
源码解析 Java 并发源码 来源:juejin.cn/post/ 6898485806587969544 前言 功能特性 快速使用 HTTP请求相关注解 配置项说明 高级功能 全局拦截器 调用适配器和数据转码器...前言 Retrofit是适用于Android和Java且类型安全的HTTP客户端,其最大的特性的是支持通过接口的方式发起HTTP请求 。...针对每个接口,可以通过@RetrofitClient的enableLog控制是否开启,通过logLevel和logStrategy,可以指定每个接口的日志打印级别以及日志打印策略。...的serviceId和path属性,可以实现微服务之间的HTTP调用 @RetrofitClient(serviceId = "${jy-helicarrier-api.serviceId}", path...针对每个Java接口,还可以通过@RetrofitClient注解的converterFactories()指定当前接口采用的Converter.Factory,指定的转换器工厂实例依然优先从Spring
lianjiatech/retrofit-spring-boot-starter 前言 Retrofit是适用于Android和Java且类型安全的HTTP客户端,其最大的特性的是支持通过接口的方式发起...针对每个接口,可以通过@RetrofitClient的enableLog控制是否开启,通过logLevel和logStrategy,可以指定每个接口的日志打印级别以及日志打印策略。...@Degrade注解可以配置在接口或者方法上,配置在方法上的优先级更高。...的serviceId和path属性,可以实现微服务之间的HTTP调用 @RetrofitClient(serviceId = "${jy-helicarrier-api.serviceId}", path...复制代码 针对每个Java接口,还可以通过@RetrofitClient注解的converterFactories()指定当前接口采用的Converter.Factory,指定的转换器工厂实例依然优先从
前言 Retrofit是适用于Android和Java且类型安全的HTTP客户端,其最大的特性的是支持通过****接口的方式发起HTTP请求 。...针对每个接口,可以通过@RetrofitClient的enableLog控制是否开启,通过logLevel和logStrategy,可以指定每个接口的日志打印级别以及日志打印策略。...@Degrade注解可以配置在接口或者方法上,配置在方法上的优先级更高。...的serviceId和path属性,可以实现微服务之间的HTTP调用 @RetrofitClient(serviceId = "${jy-helicarrier-api.serviceId}", path...针对每个Java接口,还可以通过@RetrofitClient注解的converterFactories()指定当前接口采用的Converter.Factory,指定的转换器工厂实例依然优先从Spring
前言 Retrofit是适用于Android和Java且类型安全的HTTP客户端,其最大的特性的是支持通过接口的方式发起HTTP请求。...针对每个接口,可以通过@RetrofitClient的enableLog控制是否开启,通过logLevel和logStrategy,可以指定每个接口的日志打印级别以及日志打印策略。...@Degrade注解可以配置在接口或者方法上,配置在方法上的优先级更高。...的serviceId和path属性,可以实现微服务之间的HTTP调用 @RetrofitClient(serviceId = "${jy-helicarrier-api.serviceId}", path...针对每个Java接口,还可以通过@RetrofitClient注解的converterFactories()指定当前接口采用的Converter.Factory,指定的转换器工厂实例依然优先从Spring
前言 Retrofit是适用于Android和Java且类型安全的HTTP客户端,其最大的特性的是支持通过接口的方式发起HTTP请求 。...针对每个接口,可以通过@RetrofitClient的enableLog控制是否开启,通过logLevel和logStrategy,可以指定每个接口的日志打印级别以及日志打印策略。...@Degrade注解可以配置在接口或者方法上,配置在方法上的优先级更高。...的serviceId和path属性,可以实现微服务之间的HTTP调用 @RetrofitClient(serviceId = "${jy-helicarrier-api.serviceId}", path...针对每个Java接口,还可以通过@RetrofitClient注解的converterFactories()指定当前接口采用的Converter.Factory,指定的转换器工厂实例依然优先从Spring
Retrofit turns your HTTP API into a Java interface” 需要我们定义一个接口,好的,那我们就依葫芦画瓢,写一个接口, 这里一定要记住哦,这个接口写起来是有一定的规范的...GnakApi api = retrofit.create(GnakApi.class); 这里虽然是返回一个GnakApi,但是通过源码我们知道,这里的create实际上是通过代理的方式拿到的,可以看下...,我们现在就直接去调用我们的接口方法,他返回的就是一个Call Call call = api.getAndroidInfo(); 到这里,你会很奇怪,我去,怎么和okHttp...九.Get参数拼接 这个又是什么呢,我们把天气的api改一下你就知道了 import java.util.Map; import retrofit2.Call; import retrofit2.http.GET...= retrofit.create(PostApi.class); 这里我们需要增加addCallAdapterFactory为我们后面的Rx做准备,然后我们调用两次 api.login("liuguilin
针对每个接口,可以通过@RetrofitClient的enableLog控制是否开启,通过logLevel和logStrategy,可以指定每个接口的日志打印级别以及日志打印策略。...开启熔断降级功能 默认情况下,熔断降级功能是关闭的,需要设置相应的配置项来开启熔断降级功能: retrofit: # 是否启用熔断降级 enable-degrade: true # 熔断降级实现方式...@Degrade注解可以配置在接口或者方法上,配置在方法上的优先级更高。...的serviceId和path属性,可以实现微服务之间的HTTP调用 @RetrofitClient(serviceId = "${jy-helicarrier-api.serviceId}", path...- com.github.lianjiatech.retrofit.spring.boot.core.ResponseCallAdapterFactory 针对每个Java接口,还可以通过@RetrofitClient
Rx 是Reactive Extensions的其中的一个方向,这种面向函数的响应试编程目前已经覆盖Java,android, js, Objiect-c, PHP , .net等。...data class 是用来声明一个class的,好比c中def,js中var申明变量对象一样。 SearchService :用过retrofit的也很明白,定义的一个抽象API接口。...通过这个简单的栗子,发现不管用rxJava, 还是只用retrofit, 通过使用rxkotlin将业务流程变得更加清晰,那么kotlin是否也有他的操作符,当然他也有过滤器,转换器,拆分符和rxjava...如果有兴趣的可以继续去官方github关注。 这里不再具体说明每个API。...写在最后 Rx家族目前最为熟知的是rxjava和rxSwift,前两者在移动平台上开发也不再是什么新鲜事了,那么其他的家族成员是否也会受到大家的热宠呢,让我们拭目以待!
Retrofit支持5中类型的注解:GET,POST,PUT,DELETE和HEAD....的都知道这是Java8的新特性。。...retrofit的构造器中默认添加的适配器和转化器 public static final class Builder { private Platform platform; private...和Adapter我们从代码中可以直观的看到。...,所以我们要切换到subscribeOn(Schedulers.io())线程从而达到异步的目的。
文中贴的源码可能会有部分缺失,这是我刻意为之,目的在于筛选掉无用信息增强可读性 什么是REST ful API?...Retrofit对REST ful API的兼容做的很优秀,不符合规范直接给你报错,强行规范你的代码。...而Retrofit通过注解的形式将Request需要的必要信息全依附在方法上(还是个抽象方法,尽量撇除一切多余信息),作为使用者只需要调用对应方法即可实现请求。...第二部分就是invoke(),通过3.2小节可知这是一个代理方法,可通过调用ApiService中的任一方法执行,其中参数method和args代表ApiService对应的方法和参数。...ResponseT、ReturnT是 Retrofit 对响应数据类型和返回值类型的简称 创建HttpServiceMethod 上一小节我们跟到了adapter(),这是一个抽象方法,其实现类是通过HttpServiceMethod
适用于retrofit的spring-boot-starter,支持快速集成和功能增强。...,用来应对不同的业务场景,具体可支持的配置属性及默认值如下: 注意:应用只需要配置要更改的配置项!...- retrofit2.converter.jackson.JacksonConverterFactory # 全局调用适配器工厂(组件扩展的调用适配器工厂已经内置,这里请勿重复配置...针对每个Java接口,还可以通过@RetrofitClient.callAdapterFactories指定当前接口采用的CallAdapter.Factory。...- retrofit2.converter.jackson.JacksonConverterFactory 针对每个Java接口,还可以通过@RetrofitClient.converterFactories
大家好,又见面了,我是你们的朋友全栈君。 Android 代码混淆 简介 在我们日常开发中,对已经开发完成的源代码,需做一些代码混淆工作,以对代码起到一种保护和降低安装包体积的作用。...防止拥有该成员的类和成员被重命名 类通配符 * 匹配任意长度字符,但不含包名分隔符(.)...) # ############################################# # 保留我们使用的四大组件,自定义的Application等等这些类不被混淆 # 因为这些子类都有可能被外部调用...,这样我们写一次混淆就行了。...# Retrofit -dontwarn retrofit2.** -keep class retrofit2.** { *; } -keepattributes Signature -keepattributes
一、概述 Retrofit是Square公司开发的一个类型安全的Java和Android 的REST客户端库。...来自官网的介绍: A type-safe HTTP client for Android and Java Rest API是一种软件设计风格,服务器作为资源存放地。...二、原理 在发起请求时,整个框架主要通过Call来封装每一次的请求。...SynchronousQueue每个插入操作必须等待另一个线程的移除操作,同样任何一个移除操作都等待另一个线程的插入操作。...网络请求Service,@Path、@Query、@QueryMap 创建访问API的请求(核心用法三) NewsService api = retrofit.create(NewsService
] 集成RxJava2和Retrofit2 // Rx compile rootProject.ext.dependencies["rxjava"] compile rootProject.ext.dependencies...客户端类,获取它的单例然后去调用它的上传文件的方法,可以看到我这里封装了两个方法,uploadFile是上传单个文件,uploadFiles方法上传多个文件....定义上传文件接口 /** * 上传API....构造MultipartBody 上一步定义好了上传的接口,我们最终是要去构造MultipartBody,这一块就需要跟后台同学进行沟通了,根据接口定义来实现,这里是我们的实现: /** * MultipartBuilder...总结 通篇代码实现很多,但可以看到使用Retrofit2和RxJava2的结合起来使用还是挺方便的,再也不用自己去控制线程的切换了,也不用去关注http的具体实现,少写了不少代码,实现起来也优雅不少,希望这篇文章能帮助到大家
是时候客观评价下Retrofit了,Retrofit客观存在的问题的你必须要知道!在用Retrofit开发很久的朋友或多或少踩了巨坑,阅读源码和实践后发现并不是我们认为的那么灵活!...去执行一次网络请求,必定要定义一个ApiServie,而制定的接口必须要加入一个具体实例!...不能用泛型,我开始蒙逼了,难道让我每个请求接口都写一个Api方法,虽然通过九牛二虎之力,用反射解决了,但我我真想说 :NND ?...结尾无耻的广告又来了 点击原文可查看链接: ---- RX系列导读: Retrofit 2.0(一) 超能实践,完美支持Https传输 Retrofit2.0(二) 完美同步Cookie实现免登录 Retrofit...教你徒手实现自定义的Retrofit框架 Rxjava和Retrofit 需要掌握的几个实用技巧,缓存问题和统一对有无网络处理问题 Novate:对Retrofit2.0的又一次完美改进加强!
baseUrl和ConverterFactory(对象的序列号/反序列化组件),然后创建一个Retrofit对象。...我们在Android上运行的话,就调用了return new Android()。...validateEagerly(标识):先不说,后面会用到 总:完成基本的配置,创建一个Retrofit对象 2.Service的创建以及接口的调用 我们创建了一个接口的实例,用于调用接口。...这里就简单说说ServiceMethod的功能,再讲下去这层次结果有点深... ServiceMethod的定义:把对接口中的方法的调用转化成一次HTTP调用。 (说人话...) 呃......:数据转换类型,负责将服务器返回的数据(Json、xml等各式)转换成我们需要用到的T类型的对象; 4、parameterHandlers:则负责解析 API 定义时每个方法的参数,并在构造 HTTP
Http请求部分 请求的url 地址 请求的方式 (GET、POST、PUT…) 请求内容 假设我们已经具备了 Java注解 以及 动态代理的相关知识,知道以下信息 注解可以添加在方法上 Retention...为RUNTIME的注解可以在虚拟机运行时也获取到注解上的信息 Java的动态代理可以运行时生成原接口类型的代理实现类并hook方法的调用 每一个网络接口调用请求的url地址和请求方式都是唯一的 ,那么对于一个简单的网络请求...public Call todayGank(); } 我们在一个抽象接口类中添加了一个方法,在方法上添加了注解@GET 表示这是一个Http GET请求的调用,注解中GET带的默认参数表示GET请求的地址...声明这个方法后,我们再通过Java动态代理技术在运行时解析这个方法上的注解的信息,内部通过调用OKHttp的相关方法生成一个 Call对象 有了大概思路了,我们接下来先简单的实现这样一个小例子来验证我们的想法是否可行...> get(Type returnType,Retrofit retrofit); /** * 这是一个框架提供给开发者的util方法 * 用于获取类型的泛型上的类型
VM"(一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库)。...everything is a stream(一切皆流) 然而使用RxJava的操作符,我们可以避免这些烦人甚至糟糕的回调,让结构和思路看起来更清晰,通过组合API,只需要约定最终的结果Observable...7.数据传递方式同步和异步都是链式调用,即operation1 -> operation2 -> operation3,这种做法的好处就是即时再复杂的逻辑都简单明了,不容易出错。...8.比观察者模式功能更强大,在onNext()回调方法基础上增加了onCompleted()和OnError(),当事件执行完或执行出错时回调。此外还可以很方便的切换事件生产和消费的线程。...以上是看了这些东西的新的,关于架构方面,结合mvp架构和retrofit等结构化框架流式框架会更清晰