未添加Alamofire url编码的请求参数

未添加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()

我正在关注Alamofire的CRUD和授权部分:

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

希望有帮助