Alamofire 和 JSONAPI

Alamofire and JSONAPI

我正在尝试了解如何将 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)
        }
    }

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

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 个单独的 headers。

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)    

我建议您看看优秀的 Spine 库:https://github.com/wvteijlingen/Spine它提供了一个方便的 Swift 接口来与 JSONAPI 后端进行交互,并在您学习时帮助指导您。