Это вопрос из двух частей: первый похож на этот вопрос: Правильное использование URL-адреса Alamofire URLRequestConvertible. Но мне нужна дополнительная помощь!
1) Создаю ли я маршрутизатор enum, который реализует URLRequestConvertible для каждой модели на моем уровне модели?
Страница alamofire github представляет пример маршрутизатора, который я скопировал здесь:
enum Router: URLRequestConvertible {
static let baseURLString = "http://example.com"
static var OAuthToken: String?
case CreateUser([String: AnyObject])
case ReadUser(String)
case UpdateUser(String, [String: AnyObject])
case DestroyUser(String)
var method: Alamofire.Method {
switch self {
case .CreateUser:
return .POST
case .ReadUser:
return .GET
case .UpdateUser:
return .PUT
case .DestroyUser:
return .DELETE
}
}
var path: String {
switch self {
case .CreateUser:
return "/users"
case .ReadUser(let username):
return "/users/\(username)"
case .UpdateUser(let username, _):
return "/users/\(username)"
case .DestroyUser(let username):
return "/users/\(username)"
}
}
// MARK: URLRequestConvertible
var URLRequest: NSURLRequest {
let URL = NSURL(string: Router.baseURLString)!
let mutableURLRequest = NSMutableURLRequest(URL: URL.URLByAppendingPathComponent(path))
mutableURLRequest.HTTPMethod = method.rawValue
if let token = Router.OAuthToken {
mutableURLRequest.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization")
}
switch self {
case .CreateUser(let parameters):
return Alamofire.ParameterEncoding.JSON.encode(mutableURLRequest, parameters: parameters).0
case .UpdateUser(_, let parameters):
return Alamofire.ParameterEncoding.URL.encode(mutableURLRequest, parameters: parameters).0
default:
return mutableURLRequest
}
}
}
Когда я смотрю на это (я новичок в быстрой, поэтому, пожалуйста, несите меня > _ <) Я вижу операции над пользовательским объектом; они создают пользователя, обновляют пользователя и т.д. Итак, если бы у меня были лица модели, компания, местоположение на моем уровне модели, я бы создал маршрутизатор для каждого объекта модели?
2) При интенсивном взаимодействии с API я привык создавать одноэлементный "сетевой менеджер", чтобы абстрагироваться от сетевого уровня и хранить заголовки и baseurl для этого API. Здесь описывается "Менеджер":
Удобные методы верхнего уровня, такие как Alamofire.request, используют общий экземпляр Alamofire.Manager, который настроен по умолчанию NSURLSessionConfiguration. Таким образом, следующие два утверждения эквивалентны:
Alamofire.request(.GET, "http://httpbin.org/get")
let manager = Alamofire.Manager.sharedInstance
manager.request(NSURLRequest(URL: NSURL(string: "http://httpbin.org/get")))
Этот менеджер, что я должен использовать как мой синглтон? Если да, то каким образом я устанавливаю baseurl в менеджере? Кроме того, если я использую этот менеджер, он/она может работать вместе с конструкцией маршрутизатора, показанной выше (с каждым объектом модели, устанавливающим его baseurl и NSURLRquest)? Если это так, вы можете привести простой пример?
Я новичок в библиотеке Alamofire и быстро. Итак, я знаю, что в моем понимании много дыр, но я просто пытаюсь понять лучшее, что могу! Любая информация помогает. Спасибо.