【问题标题】:Alamofire and JSONAPIAlamofire 和 JSONAPI
【发布时间】:2016-03-11 13:26:18
【问题描述】:

我试图弄清楚如何将 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)
        }
    }

【问题讨论】:

    标签: swift alamofire json-api


    【解决方案1】:

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

    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)    
    

    【讨论】:

    • 对不起,我有一个问题,我想用 Alamofire 响应设置 json api 模型,你知道有什么方法吗?
    【解决方案2】:

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

    【讨论】:

    • 这对我来说不是一个好的库:(我也不能使用它,你有什么报价吗?
    • 自我写此评论以来的 3 年多时间里,看起来 Spine 库已被弃用然后分叉,然后分叉最近没有更新。所以我想说这个库不再是 JSONAPI Swift 实现的解决方案。
    猜你喜欢
    • 2021-02-19
    • 1970-01-01
    • 2020-06-06
    • 2016-05-11
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    • 1970-01-01
    相关资源
    最近更新 更多