body with alamofire 4 swift 3

static func updateMenu(_ idMenu:String,params:[String:String],callBack:@escaping (_ check:Int,_ result:String,_ data:JSON,_ meta:JSON) -> Void){

let url = URL(string:APIManager.baseURLString + "menus/\(idMenu)?access_token=\(KeychainSwift().get(TOKEN)!)")
var urlRequest = URLRequest(url: url!)
urlRequest.httpMethod = "PUT"
do{
urlRequest.httpBody = try JSONSerialization.data(withJSONObject: params, options:[])
}catch{

}
urlRequest.setValue("application/json", forHTTPHeaderField: "Content-Type")
Alamofire.request(urlRequest).responseJSON{(response) in
print(response.debugDescription)
if let value = response.result.value as? [String:AnyObject] {
callBack(handleRespon(JSON(value)).check, handleRespon(JSON(value)).result, handleRespon(JSON(value)).data, handleRespon(JSON(value)).meta)
}else {
delayWithSeconds(3) {
callBack(1, "Network problem.".localized(), JSON("{}"), JSON("{}"))
}
}
}
}