我对 Swift 网络比较陌生,尤其是 POST 请求。我已经阅读了 Clarifai API 和 Alamofire 的文档,但还没有完全弄清楚如何使用 Alamofire 编写工作请求。到目前为止,我找到了以下代码,它创建了一个符合 Clarifai API 的结构,它希望请求的结构如下:
curl -X POST \
-H "Authorization: Key YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d @https://api.clarifai.com/v2/models/aaa03c23b3724a16a56b629203edc62c/outputs << FILEIN
{
"inputs": [
{
"data": {
"image": {
"base64": "$(base64 /home/user/image.png)"
}
}
}
]
}
FILEIN
这是我发现的快速代码,可以实现这一点:
struct ImageObj: Codable { let base64: String }
struct DataObj: Codable {
let image: ImageObj
}
struct InputObj: Codable {
let data: DataObj
}
struct InputsContainerObj: Codable {
let inputs: [InputObj]
}
let imageObj = ImageObj(base64: "abc123")
let dataObj = DataObj(image: imageObj)
let inputObj = InputObj(data: dataObj)
let inputsContainerObj = InputsContainerObj(inputs: [inputObj])
let encoder = JSONEncoder()
do {
let jsonData = try encoder.encode(inputsContainerObj)
let jsonString = String(data: jsonData, encoding: .utf8)!
print(jsonString) //{"inputs":[{"data":{"image":{"base64":"abc123"}}}]}
} catch _ as NSError {
}
现在我不知道在这一点之后我应该做什么。我尝试使用 POST 编写 Alamofire 请求,但被参数卡住了?和编码?对于参数,我尝试了类似的东西:
let parameters: Parameters = [
"Authorization: Key":"xxxxxxxxxxxxxxxxxxxxxxxx",
"Content-Type":"application/json"]
但我不知道它是否正确。如果有人可以在这里帮助我,我将不胜感激!祝大家拥有美好的一天!