cURL转Swift

粘贴curl命令,得到用URLSession发出同样请求的Swift代码。

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

试试API客户端

关于 cURL转Swift

API文档说的是curl,iOS应用说的是URLSession,手工翻译是件重复而容易出小错的活:漏掉一个请求头、该做JSON的请求体留成了字符串、认证参数被悄悄忽略。这个转换工具按curl自己的规则解析命令,包括那些会改变方法或把凭据折进请求头的参数,并生成只依赖Foundation的Swift代码。JSON请求体会写成Swift字典再交给JSONSerialization,而不是一串不透明的字符串。

功能特性

如何使用 cURL转Swift

  1. 连同参数和请求体一起粘贴curl命令
  2. 在右侧阅读生成的Swift代码
  3. 查看提示,确认有没有参数无法翻译
  4. 复制代码或下载为.swift文件

示例

输入

curl https://api.example.com/users -H 'Content-Type: application/json' -d '{"name":"Ada"}'

输出

var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")

方法由是否有请求体推断得出,和curl的判断方式一致。

常见错误与故障排除

常见问题

生成的Swift能在iOS、macOS和Linux上运行吗?
可以。它使用Foundation的URLSession,苹果平台原生支持,Linux上有swift-corelibs-foundation,同一个文件在服务端项目里也能编译。
能生成async/await而不是完成回调吗?
生成的是带完成回调的数据任务,到处都能用。改成`let (data, response) = try await URLSession.shared.data(for: request)`只是一行的事。
JSON请求体是怎么处理的?
先解析再写成Swift的[String: Any]字典,然后用JSONSerialization编码。这样负载依旧可读,改值也不用碰转义字符串。
-b带的cookie会怎样?
会变成请求上的Cookie头。要注意URLSession自带cookie存储,若不另行配置可能会追加或覆盖。
我的curl命令会被发送出去吗?
不会。命令在你的浏览器里解析、代码也在本地生成——这一点很要紧,因为文档和日志里的curl命令常常带着真实的API密钥。

相关工具

全部 ArrayKit 工具