derdida
derdida

Reputation: 14904

Alamofire POST Parameter with CRUD / Rest

I would like to add a few POST Parameters to a Alamofire Request using the CRUD Example as Base. I am unable to send my Parameters.

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
    }

}
}

But this is not working. Ill tried to change to example Code, but i dont really understand how to add simple 2 Post Parameters. It should be the same like when i use it as a simple request. Like:

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

Any help would be greatly apprechiated!

Upvotes: 2

Views: 1051

Answers (1)

Nate Cook
Nate Cook

Reputation: 93296

You can apply parameters to your mutableURLRequest by calling the encode method on an Alamofire ParameterEncoding instance. If it's a standard POST request, you'll want to use the URL case:

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
}

Upvotes: 4

Related Questions