的正确使用下面是一个Alamofire路由器Alamofire路由器
import Foundation
import Alamofire
enum PostRouter: URLRequestConvertible {
static let baseURLString = "http://jsonplaceholder.typicode.com/"
case Get(Int)
case Create([String: AnyObject])
case Delete(Int)
var URLRequest: NSMutableURLRequest {
var method: Alamofire.Method {
switch self {
case .Get:
return .GET
case .Create:
return .POST
case .Delete:
return .DELETE
}
}
let params: ([String: AnyObject]?) = {
switch self {
case .Get, .Delete:
return (nil)
case .Create(let newPost):
return (newPost)
}
}()
let url:NSURL = {
// build up and return the URL for each endpoint
let relativePath:String?
switch self {
case .Get(let postNumber):
relativePath = "posts/\(postNumber)"
case .Create:
relativePath = "posts"
case .Delete(let postNumber):
relativePath = "posts/\(postNumber)"
}
var URL = NSURL(string: PostRouter.baseURLString)!
if let relativePath = relativePath {
URL = URL.URLByAppendingPathComponent(relativePath)
}
return URL
}()
let URLRequest = NSMutableURLRequest(URL: url)
let encoding = Alamofire.ParameterEncoding.JSON
let (encodedRequest, _) = encoding.encode(URLRequest, parameters: params)
encodedRequest.HTTPMethod = method.rawValue
return encodedRequest
}
}
这是什么基本上没有被创建,删除或获取文章的例子。这段代码对于一个简单的应用程序来说看起来很干净。那些拥有大量端点和模型的应用程序如何?我们只需说我们必须对用户,公司,付款,评论,渠道等实体执行不同的操作。我正在讨论大量端点和方法。
在这种情况下,是否需要为每个端点创建一个路由器?它不觉得,对所有这些端点使用相同的路由器类是一种好的做法。
类似的问题已经在这里问:Proper usage of the Alamofire's URLRequestConvertible
但我还是不满意的回答上面的问题,因为接受的答案建议使用同一路由器的所有端点。这里最好的做法是什么?
我的问题是相当深的,它确实是关于一个单独的层(甚至更进一步,即使Alamofire不粘连到单独的网络层的抽象层) 。这比你所谈论的还要更进一步。所以我的问题是关于使用Alamofire路由器实现网络抽象层的最佳实践。 – sleepwalkerfx