2014-12-20 2 views
2

Я хотел бы добавить несколько параметров POST в запрос Alamofire, используя пример CRUD в качестве базы. Я не могу отправить свои параметры.Alamofire POST Параметр с CRUD/Rest

enum Router: URLRequestConvertible { 

static var baseURLString: String = NSUserDefaults.standardUserDefaults().objectForKey("url") as String! 

case GetForms() 
case Login(String, String) 

var method: Alamofire.Method { 
    switch self { 
    case .GetForms: 
     return .GET 
    case .Login: 
     return .POST 
    default: 
     return .GET 
    } 
} 

var path: String { 
    switch self { 
    case .GetForms(): 
     return "getforms" 
    case .Login(let email, let password): 
     return "login" 
    default: 
     return "" 
    } 
} 

var URLRequest: NSURLRequest { 
    let URL = NSURL(string: Router.baseURLString)! 
    let mutableURLRequest = NSMutableURLRequest(URL: URL.URLByAppendingPathComponent(path)) 

    switch self { 
    case .GetForms(): 
     let token: String = NSUserDefaults.standardUserDefaults().objectForKey("apikey") as String! 
     mutableURLRequest.HTTPMethod = method.rawValue 
     mutableURLRequest.setValue(token, forHTTPHeaderField: "Authorization") 
     return mutableURLRequest 
    case .Login(_, let parameters): 

// HERE I WANT TO ADD THE 2 POST Paramers from the Login Function 

     return mutableURLRequest 
    default: 
     return mutableURLRequest 
    } 

} 
} 

Но это не работает. Я попытался изменить пример кода, но я действительно не понимаю, как добавить простые 2-позиционные параметры. Он должен быть таким же, как если бы я использовал его как простой запрос. Нравится:

Alamofire.request(.GET, "http://httpbin.org/get", parameters: ["email": "admin", "password": "password"]) 
    .response { (_, _, _, error) in 
       println(error) 
    } 

Любая помощь будет очень полезна!

ответ

4

Вы можете применить параметры к вашему mutableURLRequest, вызвав метод encode на примере Alamofire ParameterEncoding. Если это стандартный запрос POST, вы захотите использовать корпус URL:

switch self { 
case .GetForms(): 
    // ... 

case .Login(let email, let password): 
    // do any URL request setup first 
    mutableURLRequest.HTTPMethod = method.rawValue 

    // set up parameters 
    let parameters = ["email": email, "password": password] 

    // return first element of tuple from encode 
    return ParameterEncoding.URL.encode(mutableURLRequest, parameters).0 

default: 
    return mutableURLRequest 
}