Alamofire 4 URL Solicitud de encoding de parameters a JSON

Recientemente actualizado a Alamofire 4 y se encuentra con algunos problemas. Se pregunta cómo codificar el parámetro de request de URL a JSON en Alamofire Router. Aquí está el ejemplo que estaba siguiendo en Alamofire 3.

enum UserRouter: URLRequestConvertible { static let baseURLString = "http://jsonplaceholder.typicode.com/" case Get(Int) case Create([String: AnyObject]) case Delete(Int) var URLRequest: NSMutableURLRequest { var method: Alamofire.Method { switch self { case .Get: return .GET case .Create: return .POST } } let params: ([String: AnyObject]?) = { switch self { case .Get: return (nil) case .Create(let newPost): return (newPost) } }() let url:NSURL = { let relativePath:String? switch self { case .Get(let postNumber): relativePath = "posts/\(postNumber)" case .Create: relativePath = "posts" } var URL = NSURL(string: PostRouter.baseURLString)! if let relativePath = relativePath { URL = URL.URLByAppendingPathComponent(relativePath) } return URL }() let URLRequest = NSMutableURLRequest(URL: url) let encoding = Alamofire.ParameterEncoding.JSON let (encodedRequest, _) = encoding.encode(URLRequest, parameters: params) encodedRequest.HTTPMethod = method.rawValue return encodedRequest } } 

Parece que ahora en Alamofire 4 esto ha cambiado.

 let encoding = Alamofire.ParameterEncoding.JSON let (encodedRequest, _) = encoding.encode(URLRequest, parameters: params) 

Esto es lo que estoy intentando con Alamofire 4 Router, pero no funciona como se esperaba.

 func asURLRequest() throws -> URLRequest { let url = try UserRouter.baseURLString.asURL() var urlRequest = URLRequest(url: url.appendingPathComponent(path)) urlRequest.httpMethod = method.rawValue switch self { case .updateDeviceToken(_,let device): urlRequest = try ParameterEncoding.encode(urlRequest as URLRequestConvertible, with: device) //urlRequest = try JSONEncoding.default.encode(urlRequest, with: device) case .addUser(_, let user): urlRequest = try URLEncoding.default.encode(urlRequest, with: user) case .updateUser(_,_,let user): urlRequest = try URLEncoding.default.encode(urlRequest, with: user) case .lockUser(_,_,let user): urlRequest = try URLEncoding.default.encode(urlRequest, with: user) default: break } return urlRequest 

Yo uso esta syntax de encoding:

 ... method: .get, parameters: parameters, encoding: JSONEncoding.default, headers: nil, ... 

En su caso, podría ser así:

 let encoding = Alamofire.JSONEncoding.default 

Estaba luchando con este problema también, hasta que encontré un ejemplo simple aquí:

https://github.com/Alamofire/Alamofire#json-encoding