带有 CRUD/Rest 的 Alamofire POST 参数

Posted

技术标签:

【中文标题】带有 CRUD/Rest 的 Alamofire POST 参数【英文标题】:Alamofire POST Parameter with CRUD / Rest 【发布时间】:2014-12-20 00:28:10 【问题描述】:

我想将一些 POST 参数添加到使用 CRUD 示例作为基础的 Alamofire 请求中。我无法发送我的参数。

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 Post 参数。当我将它用作简单请求时,它应该是一样的。喜欢:

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

任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

您可以通过在 Alamofire ParameterEncoding 实例上调用 encode 方法将参数应用于您的 mutableURLRequest。如果是标准的 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

【讨论】:

以上是关于带有 CRUD/Rest 的 Alamofire POST 参数的主要内容,如果未能解决你的问题,请参考以下文章

带有标头的 Alamofire POST 请求

GoogleDrive + Alamofire:上传带有属性的文件

带有 xcode 8 的 Alamofire 2.0

快速发送带有参数的 Alamofire 请求

如何上传带有 Alamofire 内部参数的图像

带有 HTTPBody 问题的 Alamofire 数据发送