未添加Alamofire url编码的请求参数
我正在关注Alamofire的CRUD和授权部分:未添加Alamofire url编码的请求参数,url,parameters,request,alamofire,Url,Parameters,Request,Alamofire,我正在关注Alamofire的CRUD和授权部分: enum Router: URLRequestConvertible { 因此,我想要完成的基本上是一个简单的PUT请求,如下所示: 因此,在我的代码中,我有: let requestParam : [String : AnyObject] = ["id" : "\(SOMEID)"] Alamofire.request(Router.AddUser(parameters: requestParam)) .validate()
enum Router: URLRequestConvertible {
因此,我想要完成的基本上是一个简单的PUT
请求,如下所示:
因此,在我的代码中,我有:
let requestParam : [String : AnyObject] = ["id" : "\(SOMEID)"]
Alamofire.request(Router.AddUser(parameters: requestParam))
.validate()
.responseString { response in
switch response.result {
case .Success:
..
但是,我的服务器没有得到这个id
参数
调试NSMutableURLRequest
,我发现没有添加id
参数
case .AddUser(let parameters):
print(parameters)
let encodedURL = Alamofire.ParameterEncoding.URL.encode(mutableURLRequest, parameters: parameters).0
print (encodedURL)
控制台输出:
[“id”:5649fec6d4c662c573d39fb4]
{URL:}
这真的很奇怪,因为我有另一个几乎相同的方法,但我没有得到相同的问题
编辑:
经过一些试验证明,这是因为该方法是
PUT
。如果是GET
方法,则正确添加了参数。有人知道为什么我不能为put
输入请求参数吗?这是故意的吗?在路由器中,为什么不使用NSURLComponents构建url,然后像这样返回NSMutableURLRequest:
enum Router: URLRequestConvertible {
...
var URLRequest: NSMutableUrlRequest {
var urlComponents = NSURLComponents()
urlComponents.host = // something
urlComponents.scheme = // probably wanna use https
switch self {
case .AddUser(let parameters):
// set urlComponents.path here
urlComponents.query = parameters.queryString
// depending on your code you may want to check before force unwrapping URL below
return NSMutableUrlRequest(URL: urlComponents.URL!)
}
}
}
然后,您可以使用String类型的计算属性扩展dictionary
希望有帮助 在路由器中,为什么不使用NSURLComponents构建url,然后像这样返回NSMutableURLRequest:
enum Router: URLRequestConvertible {
...
var URLRequest: NSMutableUrlRequest {
var urlComponents = NSURLComponents()
urlComponents.host = // something
urlComponents.scheme = // probably wanna use https
switch self {
case .AddUser(let parameters):
// set urlComponents.path here
urlComponents.query = parameters.queryString
// depending on your code you may want to check before force unwrapping URL below
return NSMutableUrlRequest(URL: urlComponents.URL!)
}
}
}
然后,您可以使用String类型的计算属性扩展dictionary
希望有帮助