cURL转Dart
粘贴curl命令,得到用package:http发出同样请求的Dart代码。
cURL转Dart在浏览器中解析你的命令,凭据不会离开你的设备。
改为转成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
- 粘贴API文档里的curl命令
- 在右侧阅读生成的Dart代码
- 查看提示,确认有没有参数无法迁移
- 复制代码或下载为.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密钥留在本地。
相关工具
全部 ArrayKit 工具