gpt4 book ai didi

ios - 返回 POST 请求的 Alamofire 路由器

转载 作者:搜寻专家 更新时间:2023-11-01 06:46:09 24 4
gpt4 key购买 nike

看完 RAYWENDERLICH Alamofire tutorial 我决定构建自己的路由器,除了一些细节外,它工作正常。它返回 GET 请求,但我需要 POST 请求。我花了一些时间尝试在 Router 中设置 HTTPMethod = "POST" 但可能是因为缺乏经验,我做错了并遇到了一些错误。那么我究竟需要更改路由器中的哪些内容才能使其返回 POST 请求?

她是我的密码

enum Router: URLRequestConvertible
{
static let baseURLString = "http://www.com"
case Friends(Int)
var URLRequest: NSURLRequest
{
let (path: String, parameters: [String: AnyObject]) = {
switch self
{
case .Friends (let ID):
let params = ["userID": "\(ID)"]
return ("/getFriends.php", params)
}
}()
let URL = NSURL(string: Router.baseURLString)
let URLRequest = NSURLRequest(URL: URL!.URLByAppendingPathComponent(path))
let encoding = Alamofire.ParameterEncoding.URL
return encoding.encode(URLRequest, parameters: parameters).0
}
}

最佳答案

使用 swift 3+Alamofire 4+

简单解决方案

import Foundation
import Alamofire

public enum mRouter: URLRequestConvertible {
static let baseURLString = "baseURL"
static let token = "token"

case profile
case timeline

public func asURLRequest() throws -> URLRequest {
var method: HTTPMethod {
switch self {
case .profile:
return .get
case .timeline:
return .post
}
}

let params: ([String: Any]?) = {
switch self {
case .profile(let Id):
return (["id": Id])
case .timeline:
return nil
}
}()

let url: URL = {
let relativePath: String?
switch self {
case .profile:
relativePath = "profile"
case .timeline:
relativePath = "timeline"
}
var url = URL(string: mRouter.baseURLString)!
if let relativePath = relativePath {
url = url.appendingPathComponent(relativePath)
}
return url
}()

var urlRequest = URLRequest(url: url)
urlRequest.httpMethod = method.rawValue
urlRequest.setValue(mRouter.token, forHTTPHeaderField: "Authorization")

let encoding = JSONEncoding.default
return try encoding.encode(urlRequest, with: params)
}
}

关于ios - 返回 POST 请求的 Alamofire 路由器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30631706/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com