cURL转Dart

粘贴curl命令,得到用package:http发出同样请求的Dart代码。

cURL转Dart在浏览器中解析你的命令,凭据不会离开你的设备。

由 Udit Agarwal 开发和维护

改为转成Swift

关于 cURL转Dart

后端文档给的是curl命令,Flutter应用需要的是Dart。这个转换工具在两者之间搭桥:按curl自己的规则解析参数,并生成基于package:http的代码——几乎每个Dart或Flutter项目都已经依赖这个包。请求头会收进带类型的映射,JSON请求体会写成Dart映射再交给jsonEncode,而不是粘一串字符串;基本认证则用base64Encode重新拼装。没有快捷方法的动词会退回到http.Request。

功能特性

  • 按curl的规则解析-X、-H、-d、--data-raw、--json、-u、-b、-A、-e和-G
  • 生成基于package:http的代码,这是Dart的标准HTTP客户端
  • 请求头收进带类型的Map<String, String>
  • JSON请求体写成Dart映射并用jsonEncode编码
  • 基本认证用base64Encode拼装,而不是直接贴Base64
  • 没有快捷方法的动词退回到http.Request
  • 对没有合理Dart对应写法的curl参数给出提示

如何使用 cURL转Dart

  1. 粘贴API文档里的curl命令
  2. 在右侧阅读生成的Dart代码
  3. 查看提示,确认有没有参数无法迁移
  4. 复制代码或下载为.dart文件

示例

输入

curl -X PUT https://api.example.com/users/1 -H 'Authorization: Bearer TOKEN' -d '{"role":"admin"}'

输出

final response = await http.put(url, headers: headers, body: body);

动词取自-X,JSON请求体会先写成Dart映射再编码。

常见错误与故障排除

  • 运行时找不到这个包。 — 请在pubspec.yaml的dependencies里加上http,然后执行dart pub get。它不属于SDK,但由Dart团队维护。
  • 只有Flutter web下请求失败。 — 这是CORS而不是代码问题。浏览器会执行curl永远看不到的同源策略,API必须返回正确的Access-Control响应头。
  • 请求体里的字符串被奇怪地插值了。 — Dart里美元符号会触发插值。生成的字面量已经转义,但手动粘进去的值要把$写成\$。
  • Android上能跑,却连不上模拟器里的本地服务器。 — Android模拟器看不到宿主机的localhost,请改用10.0.2.2,同时在网络安全配置中允许明文HTTP。

常见问题

生成的代码能在Flutter应用里用吗?
可以。package:http在Flutter和纯Dart里行为一致,请求代码可以原样放进服务类,只需把末尾的打印换成你的应用逻辑。
该用package:http还是Dio?
package:http是更轻量的官方选择,足以应付绝大多数请求。Dio提供拦截器、取消和multipart便利,API也足够接近,迁移不难。
JSON请求体是怎么转换的?
先解析再写成Dart的映射字面量,然后用jsonEncode编码。嵌套对象和数组依旧可读,也方便把取值换成变量。
如果方法没有http.get这样的快捷函数呢?
生成的代码会用动词字符串构造http.Request并通过send()发送,PURGE、LINK等都能覆盖。
转换时会上传curl命令吗?
不会。解析和代码生成都在你的浏览器里进行,命令中的令牌和API密钥留在本地。

相关工具

  • cURL转Swift — 把curl命令转成使用URLSession的Swift代码。
  • cURL 转 Fetch — 将 curl 命令转换为 JavaScript 的 fetch() 调用。
  • curl 转 Python — 将 curl 命令转换为可运行的 Python requests 代码。
  • curl 转 Go — 将 curl 命令转换为可运行的 Go net/http 代码。
  • curl 转 Node.js — 将 curl 命令转换为 Node.js axios 请求代码。
  • API 客户端 — 发送 HTTP 请求,构建头部和参数并查看响应;保存最近 25 条记录。

更多API 工具工具

查看全部API 工具工具 (24) · 全部工具