dromara /
jquick-curl
它解决什么问题 在 Java 里调第三方接口,通常要先从 Postman、Apifox 或浏览器 DevTools 复制一段 cURL,再手动翻译成 OkHttp 或 HttpClient 代码——构造请求头、拼参数、设超时、处理响应,一套下来几十行。等接口文档更新了,这段代码还得跟着改。 JQuick-Curl 的做法是:cURL 命令怎么写,Java 代码就怎么用。命令交给 ANTLR 解析,底层用 OkHttp 连接池执行,中间不…
dromara /
它解决什么问题 在 Java 里调第三方接口,通常要先从 Postman、Apifox 或浏览器 DevTools 复制一段 cURL,再手动翻译成 OkHttp 或 HttpClient 代码——构造请求头、拼参数、设超时、处理响应,一套下来几十行。等接口文档更新了,这段代码还得跟着改。 JQuick-Curl 的做法是:cURL 命令怎么写,Java 代码就怎么用。命令交给 ANTLR 解析,底层用 OkHttp 连接池执行,中间不…
它解决什么问题 在 Java 里调第三方接口,通常要先从 Postman、Apifox 或浏览器 DevTools 复制一段 cURL,再手动翻译成 OkHttp 或 HttpClient 代码——构造请求头、拼参数、设超时、处理响应,一套下来几十行。等接口文档更新了,这段代码还得跟着改。 JQuick-Curl 的做法是:cURL 命令怎么写,Java 代码就怎么用。命令交给 ANTLR 解析,底层用 OkHttp 连接池执行,中间不需要手写请求构建代码。 一个例子 从 Postman 复制出来的命令是: bash curl -X POST \ H 'Content-Type: application/json' \ d '{"sku":"A-1001","count":2}' 在 Java 里直接贴到接口方法上: java public interface OrderApi { @JCurlCommand("curl -X POST " + "-H 'Content-Type: application/json' " + "-d '{\"sku\":\"A-1001\",\"count\":2}'") String create(JQuickCurlReq request); } OrderApi api = JCurlInvoker.createProxy(OrderApi.class); String body = api.create(new JQuickCurlReq()); 接口定义和业务代码是分开的。调试工具里验证通过的请求,复制过来就能跑。 API 管理:注解之外还有 XML 除了 @JCurlCommand 注解,也可以把接口集中写在 apis.xml 里,请求模板完全不进 Java 代码: xml <curls namespace="com.example.UserApi"> <curl name="getUser" returnClass="java.lang.String"> curl -X GET -b @./cookies.txt </curl> </curls> XML 里支持 #{name} 占位符和 <if test="..."> 条件渲染,配合 JQuickXmlFactory 生成代理客户端。注解方式用 ${name},XML 方式用 #{name},凭据可以从环境变量注入,不用硬编码。 调试相关的几个点 Cookie 会话:-c ./cookies.txt 把 Set-Cookie 按 Netscape 格式写盘,-b @./cookies.txt 下次请求自动带上,登录态可以跨调用保持。 文件上传下载:-F 'file=@./report.pdf' 支持多部分上传,--output './download/report.pdf' 直接把响应写入磁盘。 批量执行:JQuickCurlBatchRunner 扫描一个类里所有 @JCurlCommand 方法,按顺序跑完,返回结果列表。 拦截器与配置:JQuickCurlConfig 是全局单例,统一管超时、连接池、重试、重定向和拦截器,加 Token、打日志这类横切逻辑不用改业务代码。 已实现的 curl 选项:-X、-H、-d 系列、-b / -c、-F、-o、-u、-L、-x、--http2、-k、-v 等都有解析器和测试覆盖。 背景 项目由 Dromara 开源社区维护,已入选 Awesome Java 列表,目前 Apache License 2.0。Maven 坐标: xml <dependency> <groupId>io.github.paohaijiao</groupId> <artifactId>jquick-curl</artifactId> <version>2.5.0</version> </dependency> 适合需要频繁对接第三方接口、又不想为每个接口手写一套 HTTP 代码的 Java 项目。
讨论这个产品