首页 文章 精选 留言 我的

精选列表

搜索[声明式],共10009篇文章
优秀的个人博客,低调大师

声明式 HTTP 框架 Forest v1.5.21 发布!

Forest 介绍 Forest 是一个开源的 Java HTTP 客户端框架,它能够将 HTTP 的所有请求信息(包括 URL、Header 以及 Body 等信息)绑定到您自定义的 Interface 方法上,能够通过调用本地接口方法的方式发送 HTTP 请求 在 Gitee 上现已超过 2.4k star Forest 如何使用 Forest 不需要您编写具体的 HTTP 调用过程,只需要您定义一个接口,然后通过 Forest 注解将 HTTP 请求的信息添加到接口的方法上即可。请求发送方通过调用您定义的接口便能自动发送请求和接受请求的响应 Forest 的工作原理 Forest 会将您定义好的接口通过动态代理的方式生成一个具体的实现类,然后组织、验证 HTTP 请求信息,绑定动态数据,转换数据形式,SSL 验证签名,调用后端 HTTP API (httpclient 等 API) 执行实际请求,等待响应,失败重试,转换响应数据到 Java 类型等脏活累活都由这动态代理的实现类给包了。 请求发送方调用这个接口时,实际上就是在调用这个干脏活累活的实现类 重点更新内容 此次版本发布主要解决了URL在某些情况下的解析错误问题,以及对字符串模板进行手动URLEncode的支持 任何包含特殊字符的URL地址或Body中的表单信息要发送请求,都要进过一定程度的UREncode以符合HTTP相关标准,才能正常发出请求 而HTTP请求中的不同部分对URLEncode强度要求是不同的,比如Body表单格式字符串的要求相对宽松,可以包含{,},空格等字符串,而Query参数值部分则必须将其转义才能正常发送 所以Forest在默认情况下为HTTP请求已经URL中的不同部分提供了各自合适的编码强度(最大限度宽松)的 URLEncode 但有些情况默认的URLEncode也无法满足要求: 不同服务端接口对编码的强度要求可能是不同的,比如要求Query参数必须是最严格的编码 已经如果在URL中大范围使用${变量名}这样变量引用的时候,Forest也无法准备判断您引入的变量是URL中具体那个部分,从而也无法给出准确的编码强度 输入一个有歧义的字符串到字符串模板中 所以此时需要进行手动URLEncode,为此提供了在字符串模板中可供调用的内置函数: encode(str): 严格编码,最大的编码强度 encodeQuery(str): Query参数编码,对URL中的参数值部分字符串进行编码,强度适中以最大限度适应HTTP规范 encodePath(str): Path路径编码,对URL中域名+后端+/后的路径部分字符串进行编码 encodeForm(str): Form表单编码,对Body中x-www-form-urlencoded格式的请求体字符串进行编码,强度最宽松 encodeUserInfo(str): UserInfo编码,对URL中用户名密码验证信息部分字符串进行编码 例子: // 在{}中调用encode函数对userInfo变量进行严格URLEncode编码 @Get("http://{encode(userInfo)}@localhost:8080/hello/user") ForestResponse<String> doGet(@Var("userInfo") String userInfo); 若调用该接口参数如下: client.doGet("xxx/yyy/foo"); 则产生的请求为: GET http://xxx%2Fyyy%2Ffoo@localhost:8080/hello/user HTTP 如若不用encode函数的话,则请求会变成 GET http://xxx/yyy/foo@localhost:8080/hello/user HTTP 此时xxx/yyy/xxx中的/会使地址产生歧义,将xxx错误地解析为域名,显然这样的地址是无法正常发送出去的 文档和示例 项目官网 JavaDoc Demo 工程 本次更新 新增特性: feat: 字符串模板支持手动URLEncode (#I58D1C:字符串模板支持手动URLEncode) 修复的问题: fix: url在某些场景下的解析错误 (#I56XDM:url在某些场景下的解析错误)

优秀的个人博客,低调大师

声明式 HTTP 框架 Forest v1.5.18 发布!

Forest介绍 Forest 是一个开源的 Java HTTP 客户端框架,它能够将 HTTP 的所有请求信息(包括 URL、Header 以及 Body 等信息)绑定到您自定义的 Interface 方法上,能够通过调用本地接口方法的方式发送 HTTP 请求 现已 2.1k star Forest 如何使用 Forest 不需要您编写具体的 HTTP 调用过程,只需要您定义一个接口,然后通过 Forest 注解将 HTTP 请求的信息添加到接口的方法上即可。请求发送方通过调用您定义的接口便能自动发送请求和接受请求的响应 Forest 的工作原理 Forest 会将您定义好的接口通过动态代理的方式生成一个具体的实现类,然后组织、验证 HTTP 请求信息,绑定动态数据,转换数据形式,SSL 验证签名,调用后端 HTTP API(httpclient 等 API)执行实际请求,等待响应,失败重试,转换响应数据到 Java 类型等脏活累活都由这动态代理的实现类给包了。 请求发送方调用这个接口时,实际上就是在调用这个干脏活累活的实现类 文档和示例 项目官网 JavaDoc Demo工程 本次更新 修复的问题: fix: 在原生Spring环境中,拦截器无法注入Spring上下文 (#I4UE9T:在原生Spring环境中,拦截器无法注入Spring上下文) fix: httpclient后端的https连接池并发时数据会串 (#I4TYJ1:httpclient后端的https连接池并发时数据会串) fix: 响应头两个 Set-Cookie 的时候只能取到最后一个 (#I4TATV: 响应头两个 Set-Cookie 的时候只能取到最后一个) 其它改动: refactor: 去掉 commons-logging 包的依赖

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册