首页 文章 精选 留言 我的

精选列表

搜索[数据库客户端],共10000篇文章
优秀的个人博客,低调大师

Forest v1.5.9 版本发布,轻量级 HTTP 客户端框架

v1.5.9 版本发布了,此次更新主要解决了URL Encoder在某些情况下不正确的问题 为此自己重新实现了URL解析和URL编码,抛弃了原有的Java自带的URI对象解析和URLEncoder类 实现了URL语义化的字符串模板 自动区分模板参数属于URL的哪个部分 /** * 新版本能够识别 {a} 和 {b} 是一个URL的Query参数 * 会按照查询参数的要求进行URL编码:会将'&'符号转义 * 而 {path} 会被识别URL路径的一部分 * 会按照URL路径的要求来进行URL编码:会保留'&'符号,不做转义 */ @Get("/data/{path}?a={a}&b={b}") String getData(@Var("path") String path, @Var("a") String a, @Var("b") String b); {}与${}的区别 {}代表一个Query参数 {}模板参数,在?a={a}的情况下,会被认为是一个Query参数,即便变量可能包含"1&x=10&y=20"这样多个参数的字符串,也会被转义成一个Query参数 @Get("http://localhost/data?a={a}&b={b}") String getData(@Var("a") String a, @Var("b") String b) // 最终产生的URL是 // http://localhost/data?a=1%26x%3D10%26y%3D20&b=hello // 也就是只会有 a 和 b 两个Query参数 myClient.getData("1&x=10&y=20", "hello"); ${}可以包含多个Query参数 而${}模板参数,可以认为是一种字符串替换,替换完再对URL参数进行解析,所以一个模板参数引用的变量中可能包含多个参数,也会被解析成多个参数 @Get("http://localhost/data?a=${a}&b=${b}") String getData(@Var("a") String a, @Var("b") String b) // 最终产生的URL是 // http://localhost/data?a=1&x=10&y=20&b=hello // 也就是只会有 a、x、y、b 四个Query参数 myClient.getData("1&x=10&y=20", "hello"); 推荐使用{}作为模板参数 基于这两种模板参数各自的特性,都各有各的用处,但一般情况下,推荐使用{} 因为它更结构化、更语义化,也更容易让人理解,不容易出错,尤其是在URL参数中传递另一个URL地址时的作用更为突出 比如,要传一个带参数的子URL:https://search.gitee.com/?type=repository&q=forest 接到父URL后为http://localhost/data?call={url} 如果是用${url}就会出问题 @Get("/data?call=${url}") String getData(@Var("url") String url); // 最后产生的URL是 // http://localhost/data?call=https://search.gitee.com/?type=repository&q=forest 咋看起来没错,但最后那部分&q=forest会被认为是父URL的Query参数,但其实应该是子URL的 如果用{url}就没关系,即使后来再有其它参数也毫无问题 @Get("/data?call={url}&x={x}") String getData(@Var("url") String url, @Var("x") String x); // 最后产生的URL是 // http://localhost/data?call=https://search.gitee.com/?type=repository%26q=forest&x=xxx 可以看到,子URL中Query参数的连接符&被转义了,这样就解决了子URL参数和父URL参数(如后面的x)之间产生的歧义 FIX的BUG fix: URI路径的URLEncoder编码结果不正确 (#I4DUFG:URI路径的URLEncoder编码结果不正确) 项目介绍 Forest是一个高层的、极简的轻量级HTTP调用API框架。 相比于直接使用Httpclient您不再用写一大堆重复的代码了,而是像调用本地方法一样去发送HTTP请求。 文档和示例 项目主页 中文文档 JavaDoc Demo工程 发送JSON数据 /** * 将对象参数解析为JSON字符串,并放在请求的Body进行传输 */ @Post("/register") String registerUser(@JSONBody MyUser user); /** * 将Map类型参数解析为JSON字符串,并放在请求的Body进行传输 */ @Post("/test/json") String postJsonMap(@JSONBody Map mapObj); /** * 直接传入一个JSON字符串,并放在请求的Body进行传输 */ @Post("/test/json") String postJsonText(@JSONBody String jsonText); 发送XML数据 /** * 将一个通过JAXB注解修饰过的类型对象解析为XML字符串 * 并放在请求的Body进行传输 */ @Post("/message") String sendXmlMessage(@XMLBody MyMessage message); /** * 直接传入一个XML字符串,并放在请求的Body进行传输 */ @Post("/test/xml") String postXmlBodyString(@XMLBody String xml); 发送Protobuf数据 /** * ProtobufProto.MyMessage 为 Protobuf 生成的数据类 * 将 Protobuf 生成的数据对象转换为 Protobuf 格式的字节流 * 并放在请求的Body进行传输 * * 注: 需要引入 google protobuf 依赖 */ @Post(url = "/message", contentType = "application/octet-stream") String sendProtobufMessage(@ProtobufBody ProtobufProto.MyMessage message); 详细文档请看:http://forest.dtflyx.com

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

Forest v1.5.8 版本发布,轻量级 HTTP 客户端框架

v1.5.8 版本发布,该版本主要解决以下BUG: fix: 使用@DownloadFile下载文件时,在某些环境下会发送阻塞 (#I4DLBI:使用@DownloadFile下载文件,在某些环境下会发送阻塞) fix: response对google protobuf包依赖 (#I4DKQW:forest-spring-boot-starter 1.5.6缺少protobuf-java的jar包) 项目介绍: Forest是一个高层的、极简的轻量级HTTP调用API框架。 相比于直接使用Httpclient您不再用写一大堆重复的代码了,而是像调用本地方法一样去发送HTTP请求。 文档和示例: 项目主页 中文文档 JavaDoc Demo工程 Forest有哪些特性? 以Httpclient和OkHttp为后端框架 通过调用本地方法的方式去发送Http请求, 实现了业务逻辑与Http协议之间的解耦 因为针对第三方接口,所以不需要依赖Spring Cloud和任何注册中心 支持所有请求方法:GET, HEAD, OPTIONS, TRACE, POST, DELETE, PUT, PATCH 支持文件上传和下载 支持灵活的模板表达式 支持拦截器处理请求的各个生命周期 支持自定义注解 支持OAuth2验证 支持过滤器来过滤传入的数据 基于注解、配置化的方式定义Http请求 支持Spring和Springboot集成 JSON格式数据序列化和反序列化 XML格式数据序列化和反序列化 Protobuf格式数据序列化和反序列化 JSON、XML或其他类型转换器可以随意扩展和替换 支持JSON转换框架: Fastjson, Jackson, Gson 支持JAXB形式的XML转换 可以通过OnSuccess和OnError接口参数实现请求结果的回调 配置简单,一般只需要@Request一个注解就能完成绝大多数请求的定义 支持异步请求调用 发送JSON数据 /** * 将对象参数解析为JSON字符串,并放在请求的Body进行传输 */ @Post("/register") String registerUser(@JSONBody MyUser user); /** * 将Map类型参数解析为JSON字符串,并放在请求的Body进行传输 */ @Post("/test/json") String postJsonMap(@JSONBody Map mapObj); /** * 直接传入一个JSON字符串,并放在请求的Body进行传输 */ @Post("/test/json") String postJsonText(@JSONBody String jsonText); 发送XML数据 /** * 将一个通过JAXB注解修饰过的类型对象解析为XML字符串 * 并放在请求的Body进行传输 */ @Post("/message") String sendXmlMessage(@XMLBody MyMessage message); /** * 直接传入一个XML字符串,并放在请求的Body进行传输 */ @Post("/test/xml") String postXmlBodyString(@XMLBody String xml); 发送Protobuf数据 /** * ProtobufProto.MyMessage 为 Protobuf 生成的数据类 * 将 Protobuf 生成的数据对象转换为 Protobuf 格式的字节流 * 并放在请求的Body进行传输 * * 注: 需要引入 google protobuf 依赖 */ @Post(url = "/message", contentType = "application/octet-stream") String sendProtobufMessage(@ProtobufBody ProtobufProto.MyMessage message); 文件上传 /** * 用@DataFile注解修饰要上传的参数对象 * OnProgress参数为监听上传进度的回调函数 */ @Post("/upload") Map upload(@DataFile("file") String filePath, OnProgress onProgress); 可以用一个方法加Lambda同时解决文件上传和上传的进度监听 Map result = myClient.upload("D:\\TestUpload\\xxx.jpg", progress -> { System.out.println("progress: " + Math.round(progress.getRate() * 100) + "%"); // 已上传百分比 if (progress.isDone()) { // 是否上传完成 System.out.println("-------- Upload Completed! --------"); } }); 基本签名验证 @Post("/hello/user?username=${username}") @BasicAuth(username = "${username}", password = "bar") String send(@DataVariable("username") String username);

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

Forest v1.5.6 版本发布,轻量级 HTTP 客户端框架

Forest v1.5.6 版本发布了,此次更新主要修复一些BUG 项目介绍: Forest 是一个高层的、极简的轻量级 HTTP 调用 API 框架。 相比于直接使用 Httpclient ,您不再用写一大堆重复的代码了,而是像调用本地方法一样去发送 HTTP 请求。 文档和示例: 项目主页 仓库地址 中文文档 JavaDoc Demo 工程 Forest 有哪些特性? 以 Httpclient 和 OkHttp 为后端框架 通过调用本地方法的方式去发送 Http 请求, 实现了业务逻辑与 Http 协议之间的解耦 因为针对第三方接口,所以不需要依赖 Spring Cloud 和任何注册中心 支持所有请求方法:GET 、HEAD 、OPTIONS 、TRACE 、POST 、DELETE 、PUT 、PATCH 支持文件上传和下载 支持灵活的模板表达式 支持拦截器处理请求的各个生命周期 支持自定义注解 支持 OAuth2 验证 支持过滤器来过滤传入的数据 基于注解、配置化的方式定义 Http 请求 支持 Spring 和 Springboot 集成 JSON 字符串到 Java 对象的自动化解析 XML 文本到 Java 对象的自动化解析 JSON、XML 或其他类型转换器可以随意扩展和替换 支持 JSON 转换框架: Fastjson 、Jackson 、Gson 支持 JAXB 形式的 XML 转换 可以通过 OnSuccess 和 OnError 接口参数实现请求结果的回调 配置简单,一般只需要 @Request 一个注解就能完成绝大多数请求的定义 支持异步请求调用 支持 Protobuf @Post( url = "/proto", contentType = ContentType.APPLICATION_OCTET_STREAM) ProtobufProto.Data sendProtobufData(@ProtobufBody ProtobufProto.Data data); 后端切换的快捷注解 // 切换到 okhttp3 @OkHttp3 @Post("/data1") String sendData1(@Body MyUser user); // 切换到 httpclient @HttpClient @Post("/data2") String sendData2(@Body MyUser user); 新增特性: feat: 将 timeout 细化为 connectTimeout 和 readTimeout (#I4DH21:将timeout细化为connectTimeout和readTimeout) FIX 的 BUG: fix: Google Protobuf 包依赖错误 (#I4DDZY:Google Protobuf包依赖错误) fix: 配置 forest.connect-timeout 不生效 (#I45298:Spring Boot工程配置forest.connect-timeout不生效)

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

Forest v1.5.5 版本发布,轻量级 HTTP 客户端框架

Forest v1.5.5 版本发布了,此版本主要支持了Protobuf,以及修改了若干Bug 项目介绍: Forest是一个高层的、极简的轻量级HTTP调用API框架。 相比于直接使用Httpclient您不再用写一大堆重复的代码了,而是像调用本地方法一样去发送HTTP请求。 文档和示例: 项目主页 仓库地址 中文文档 JavaDoc Demo工程 Forest有哪些特性? 以Httpclient和OkHttp为后端框架 通过调用本地方法的方式去发送Http请求, 实现了业务逻辑与Http协议之间的解耦 因为针对第三方接口,所以不需要依赖Spring Cloud和任何注册中心 支持所有请求方法:GET, HEAD, OPTIONS, TRACE, POST, DELETE, PUT, PATCH 支持文件上传和下载 支持灵活的模板表达式 支持拦截器处理请求的各个生命周期 支持自定义注解 支持OAuth2验证 支持过滤器来过滤传入的数据 基于注解、配置化的方式定义Http请求 支持Spring和Springboot集成 JSON字符串到Java对象的自动化解析 XML文本到Java对象的自动化解析 JSON、XML或其他类型转换器可以随意扩展和替换 支持JSON转换框架: Fastjson, Jackson, Gson 支持JAXB形式的XML转换 可以通过OnSuccess和OnError接口参数实现请求结果的回调 配置简单,一般只需要@Request一个注解就能完成绝大多数请求的定义 支持异步请求调用 支持Protobuf @Post( url = "/proto", contentType = ContentType.APPLICATION_OCTET_STREAM) ProtobufProto.Data sendProtobufData(@ProtobufBody ProtobufProto.Data data); 后端切换的快捷注解 // 切换到 okhttp3 @OkHttp3 @Post("/data1") String sendData1(@Body MyUser user); // 切换到 httpclient @HttpClient @Post("/data2") String sendData2(@Body MyUser user); 新特性: feat: 支持每个请求都可自定义序列化转换器 (#I4CLV8:支持每个请求都可自定义序列化转换器) feat: 二进制类型请求体 (#I4D4GY:二进制类型请求体) feat: Protobuf请求体 (#I4D4JT:Protobuf请求体) feat: 转换器对应包依赖 需要时获取 (#I29XE0:处理Protobuf的序列化和反序列化的转换器) Fix的Bug: fix: getAttribute方法在多线程情况下取值会串 (#I4D5KS:getAttribute在多线程情况下返回值会串) fix: 在onRetry方法中,调用 addQuery 或 addBody 能API无效 (#I4CZS5:在onRetry方法中,调用 addQuery 或 addBody 能API无效) 代码改动: add:@okhttp注解 add: @HttpClient 注解 add: ForestRequest.type(ForestRequestType type) 方法 add: ForestLogHandler.logContent(String content) 方法 特别鸣谢: @yakax

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

Altair 4.0.6 发布,适用于全平台的 GraphQL 客户端

Altair 是一个界面美观、功能丰富的 GraphQL Client IDE,适用于所有平台。它使你能够在任何平台上与你被授权访问的任何 GraphQL 服务器进行交互。 Altair 4.0.6 正式发布,该版本更新内容如下: d028862: 更新发布工作流程; 5db6289: 更新了 deplot 文档脚本; 94516cf: 更新了文档,以修复破坏性构建; 9abd2e9: 更新 url 框发送按钮; 2d1f507: 将发送按钮的最小宽度设置为 120px; cba4822: 将分支 master 合并到暂存区; 77dfcdb: 添加了请求开始和结束时间; 01c3b04: 在 github-metadata 插件目录下运行 yarn install; d5adc68: 尝试使用 github 令牌获取 github 元数据; 34b5b5a: 解决应用程序状态中的循环引用; 9afaf61: 更新部署文档作业; 更多详情可查看:https://github.com/imolorhe/altair/releases/tag/v4.0.6

资源下载

更多资源
Nacos

Nacos

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

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

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部分的功能。

用户登录
用户注册