swift - 如何快速执行 curl 请求?
问题描述
我正在尝试使用外部 API,它的 API 请求如下所示。我习惯于只有一个 url 的请求,但是我该如何处理“H”和“d”参数呢?我应该将它们包含在我的网址中还是
$ curl -X POST https://api.lucidtech.ai/v0/receipts \
-H 'x-api-key: <your api key>' \
-H 'Content-Type: application/json' \
-d '{"documentId": "a50920e1-214b-4c46-9137-2c03f96aad56"}'
目前我有以下代码,但是我在哪里放置 API 密钥和文档 ID 在此代码中?
@IBAction func getScannedData(_ sender: Any){
guard let url = URL(string: "https://api.lucidtech.ai/v0/receipts") else {return}
let session = URLSession.shared
session.dataTask(with: url) { (data, response, error) in
if let response = response{
print(response)
}
}
解决方案
这是如何将curl
命令转换为的示例URLRequest
:
guard let url = URL(string: "https://api.lucidtech.ai/v0/receipts"),
let payload = "{\"documentId\": \"a50920e1-214b-4c46-9137-2c03f96aad56\"}".data(using: .utf8) else
{
return
}
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.addValue("your_api_key", forHTTPHeaderField: "x-api-key")
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = payload
URLSession.shared.dataTask(with: request) { (data, response, error) in
guard error == nil else { print(error!.localizedDescription); return }
guard let data = data else { print("Empty data"); return }
if let str = String(data: data, encoding: .utf8) {
print(str)
}
}.resume()
推荐阅读
- python - Scrapy 没有在分页之后填充输出
- swift - 使用 vapor 3 在同一条路线上处理不同类型的 json
- c# - C# - 从 Dictionary 创建 JSON 对象数组
- angular - Angular HttpClient 使套接字保持打开状态
- c++ - 对齐的 malloc c++ 实现
- github - 如何标记、标记或创建 Github 存储库?
- .net - VB.NET 在运行时创建的控件上的意外锚定行为
- vba - VBA 添加相邻单元格
- css - CSS动画比例()不平滑
- logistic-regression - 未满足 logit 线性的逻辑回归假设 (SPSS)