Alamofire和JSONAPI

时间:2016-01-24 04:47:20

标签: swift alamofire json-api

我试图弄清楚如何将Alamofire与JSONAPI数据源一起使用。我试图POST一些数据。下面的代码不起作用。我正在学习HTTP请求和JSON,因此代码可能存在其他问题。真的很感激任何帮助。

        let parameters = [
        "data" : [
            "type" : "notes",
            "attributes" : [
                "relevant-date" : date,
                "details" : self.textField.text
            ],
            "relationships" : [
                "child" : [
                    "data" : [
                        "type" : "children",
                        "id" : self.passedChildID!
                    ]
                ]
            ]
        ]
    ]

    Alamofire.request(.POST, "url", parameters: parameters, encoding: .JSON)
    .responseJSON { (response) -> Void in
        if let value = response.result.value {
            let json = JSON(value)
        }
    }

2 个答案:

答案 0 :(得分:0)

这是通过服务器端过滤器解决的,更新的代码如下。

let parameters = [
        "auth_token" : "test",
        "filter" : [
            "phone-number" : self.PhoneNumber!
        ]
    ]
Alamofire.request(.GET, url, parameters: parameters, encoding: .URL)
        .responseJSON { (response) -> Void in
                print("Request \(response.request)")
         }

修改

真的使用Alamofire Github页面中的代码解决了它。我必须添加下面标识的2个单独的标题。

let URL = NSURL(string: "https://httpbin.org/post")!
let mutableURLRequest = NSMutableURLRequest(URL: URL)
mutableURLRequest.HTTPMethod = "POST"

let parameters = ["foo": "bar"]

do {mutableURLRequest.HTTPBody = try     NSJSONSerialization.dataWithJSONObject(parameters, options: NSJSONWritingOptions())
    } catch {
        // No-op
}

    mutableURLRequest.setValue("application/vnd.api+json", forHTTPHeaderField: "Content-Type")  //one header
    mutableURLRequest.setValue("application/vnd.api+json", forHTTPHeaderField: "Accept")  //second header

Alamofire.request(mutableURLRequest)    

答案 1 :(得分:0)

我建议您查看优秀的Spine库:https://github.com/wvteijlingen/Spine它提供了一个方便的Swift界面,可以与JSONAPI后端进行交互,并在您学习的过程中为您提供指导。