同步操作将从 dromara/forest 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
feat: #I3B3UZ 支持application/octet-stream等二进制请求方式
feat: #I3DOAP 变量未定义时,报错给予更友好的提示
feat: #I3E0FD 添加@Var注解,作为@DataVariable注解的简化快捷版本
fix: #I3DAEQ ForestResponse作为返回值使用@DownloadFile注解进行下载后getResult()为空
add: ForestConfiguration#isVariableDefined方法
add: @Var注解,作为@DataVariable注解的简化版本
add: ResourceRequestBody类
add: ResourceRequestBodyBuilder类
add: MultipartRequestBody类
add: MultipartRequestBodyBuilder类
add: SupportFormUrlEncoded类
refactor: 将DataVariableLifeCycle改名为VariableLifeCycle
refactor: Body的解析方式改为构建器模式
refactor: ForestVariableUndefined.java 改名为 ForestVariableUndefinedException
update: 更新Spring-Core和Spring-Webmvc版本
update: 更新JUnit版本
fix: #I3B5VH 反序列化XML为泛型类对象时报错
fix: #I3B49O 全局配置的log-handler不起作用
feat: feat: #I3AHLC @LogHandler 和 @LogEnabled 注解作用域添加 ElementType.TYPE级别
feat: Query参数可以选择是否urlencoded
fix: #I3AJSD 遇到非application/json的Response Header无法正常解析JSON
fix: 多模块开发多个@ForestScan注解只能扫描到其中一个注解的basePackages
fix: 基本类型判断漏掉了boolean
refactor: 将 gourpid 'spring-boot-starter-forest' 改为 'forest-spring-boot-starter'
refactor: 将 spring-boot-starter-forest 模块改名为 forest-spring-boot-starter
feat: #I39O55 可以从ForestResponse对象获取请求总耗时
fix: #I39M2G LogEnabled注解的logResponseContent在请求失败的情况下无效
add: ForestResponse.requestTime属性
add: ForestResponse.responseTime属性
add: ForestResponse.getTimeAsMillisecond方法
fix: #I36SJ8 请求不能设置proxy用户名和密码
fix: #I38KEJ https的url字符串会自动去掉 :80 端口部分
fix: 全局配置重试次数,对 Read timed out 错误无效
fix: URL井号(#)后面字符串没有encoding
fix: httpclient后端处理Cookie时产生'Invalid cookie header'的问题
refactor: 实现Interceptor接口时,不必强制实现onSuccess方法和onError方法
feat: #I2BF4N 支持负数的字符串模板下标引用
feat: @Query, @Body, @Header注解支持defaultValue默认值属性
fix: #I29BFM Fastjson使用JSONField注解的format属性设置日期格式没起效果
refactor: 去掉多余的System.out.println命令行输出
refactor: forest在spring的xml配置部分
add: @Query, @Body, @Header注解的defaultValue属性
add: jsr305依赖
add: ForestRequest.methodReturn方法和ForestRequest.getMethodReturnValue方法
update: 将错误拼写的方法名 handleSyncWicthException 改为 handleSyncWithException
feat: #I1QR18 处理Cookie
feat: #I28PL7 遇到一些自定义的Response Content-Type,无法正常读取响应内容
feat: #I28MY5 通过@FormBody注解将参数标识为表单格式的请求体
feat: #I28FWM @Request、@Get、@Post等请求注解支持增加value属性作为url属性的别名
feat: #I281O0 可以将"true", "false"字符串转换成Boolean返回类型
fixL #I28SA1 用httpclient的方式上传文件会不成功,但用okhttp就是成功的
add: ForestCookies类
add: ForestCookie类
add: OnLoadCookie接口
add: OnSaveCookie接口
feat: #I26772 通过@JSONBody注解将参数标识为JSON格式的请求体
feat: #I26774 通过@XMLBody注解将参数标识为XML格式的请求体
feat: #I26KO1 @OAuth2注解,以方便实现OAuth2.0验证
feat: #I27JGF 支持多文件上传
feat: 注解属性别名
feat: #I27JFM 支持在@Query,@DataFile等注解中使用隐式变量 ${_it} 、 ${_index} 和 ${_key}
fix: #I277UN 请求响应返回中文内容乱码
fix: HttpClient后端的Response Encoding为空时的问题
fix: 发送JSON参数错误
fix: JAXB转换Map和List报空指针
add: ForestRequest.method属性
add: AbstractBodyLifeCycle类
refactor: 将BASE64Encoder和BASE64Decoder替换成Base64.encode和Base64.decode
add: MappingParameter.nameTemplate属性
refactor: 将@Auth2注解移动到com.dtflys.forest.extensions包下
add: OAuth2Token类
add: OAuth2MockServer类
add: @AliasFor注解
style: 将常量改为大写字母
refactor: 将HttpclientResponseHandler类改名为AbstractBackendResponseHandler
add: 测试文件上传用的图片
add: 字符串模板相关类中 hasIterateVariable / isIterateVariable 方法
fix: #I22S6N 参数序列化的过程中可能不会选择配置中定义的数据转换器
fix: #I22S5Q 在拦截器中重新设置URL,再调用addQuery会出问题
fix: #I23UF4 @DataVariable修饰的参数会报空指针
fix: #I24LNB 使用自己创建的ForestConfiguration对象作为全局配置时,发生logHandler为空指针的问题
add: @HTTPProxy注解,用于正向代理
fix: #I22S5Q 在拦截器中重新设置URL,再调用addQuery会出问题
fix: #I22S6N 参数序列化的过程中可能不会选择配置中定义的数据转换器
fix: #I22M9K 没传递依赖commons-collection
add: @HTTPProxy注解,用于正向代理
feat: #I1Z9LE 通过全局配置注册过滤器
feat: #I1Z9M3 通过全局配置设置数据转换器
feat: #I22DVD JSON数据转换器支持全局日期格式换参数配置
fix: #I22CWA 请求设置的Decoder只能接受String类型参数
add: ForestConvertProperties类
add: ForestConverterItemProperties类
add: ForestConfiguration.converts属性
add: ForestConfiguration.filters属性
add: StringUtils.trimBegin方法
add: ContentType.canReadAsBinaryStream方法
refactor: 将数据类型枚举类ForestDataType改造成普通类
refactor: 改造ReflectUtils.convertObjectToMap方法
refactor: 改造JSONConverterSelector类
refactor: 改造数据类型ForestDataType类
refactor: 修改ForestResponse.isSuccess方法的判断逻辑
fix: # I1Z5DG 使用Httpclient后端时,网络错误重试失败后报空指针
fix: #I1Z5DW 使用Httpclient后端时,请求失败重试没有日志
fix: #I1Z5ES 请求网络错误,并且没有response的时候,报了404
fix: #I1YWS1 拦截器的beforeExecute方法中设置请求方式失败
add: ForestRequest.getRequestLogMessage方法
add: ForestRequest.setRequestLogMessage方法
feat: #I1Y5Y8 自定义可扩展的请求日志
feat: JSONQuery注解
feat: #I1YQMJ JSONQuery注解
feat: #I1Y6RX 支持URL中的重名Query参数
feat: #I1YN5J 通过ForestRequest获取实际发送请求数据内容
fix: #I1YP7J response中的ContentType解析错误
add: OkHttp3LogBodyMessage类
add: LogEnabledLifeCycle类
add: LogConfiguration类
add: LogBodyMessage类
add: HttpclientLogBodyMessage类
add: ForestLogger类
delete: SyncHttpclientRequestSender2类
fix: #I1WVIE 发送带表单格式数据的POST请求时,表单中有List、数组、Map、嵌套对象时出错
fix: #I1WDTU @Body("name") 修饰List参数时,变成了字符串,应该是JSON列表
feat: #I1W2W8 使用多级全局变量
fix: #I1WDTU @Body("name") 修饰List参数时,变成了字符串,应该是JSON列
fix: #I1W0BM setRequestBody后,request中的data依然会拼接到body中
add: class StringRequestBody
add: class ObjectRequestBody
add: class NameValueRequestBody
add: class ForestRequestBody