如何在Alamofire中设置requestSerializer

6

我目前正在使用Swift开发项目。我使用Alamofire处理REST API,但是为了让它正常工作,我需要在requestSerializer中传递一个参数。

AFNETWORKING中,

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];

但我找不到任何关于Alamofire的资料。我是Swift的新手,请帮帮我。

2个回答

5
您可以将JSON数据作为编码参数传递,Alamofire中的Encoding等同于AFJSONRequestSerializer
request = Alamofire.request(.POST, webServicesURL, parameters: parameters, encoding: .JSON, headers: self.headers)

如果您想在响应中处理JSON数据,只需发送请求。
//This will give you response in JSON
request?.responseJSON { response in
        switch response.result
        {
        case .Success:
            success(response: response.result.value)
        case .Failure(let error):
            failure(error: error)
        }
    }

requestJSON相当于Alamofire中的AFJSONResponseSerializer

或者,如果您想传递自定义标头,请将字典作为参数传递

let headers = [
    "Content-Type": "application/json"
]
//Here we are passing the header in header parameter.
request = Alamofire.request(.POST, webServicesURL, parameters: parameters, encoding: .JSON, headers: self.headers)

1
“One more Question success(response: response.result.value)” 是 Alamorfire 的默认代码块还是由您自己创建的自定义代码块? - Viraj Padsala
1
实际上,这完全取决于你,不过我已经编写了成功块并相应地处理了开关块。 - Amit Singh
1
在这个方法中,我写了一个responseJSON块,其中包含成功的块,并相应地进行处理。 - Amit Singh

0

您可以在请求中使用encoding标签。使用方法如下:

Alamofire.request("<url>", method: .post, parameters: parameters, encoding: JSONEncoding.default){(response:DataResponse<Any>) in }


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接