Вот пример 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