Итак, я пытался создать сетевой уровень, который можно было бы легко использовать, поддерживать и тестировать.Я решил пойти с Alamofire, поскольку он действительно прост в использовании и обслуживании (особенно при использовании Routing).
Но я застрял в тестовой части.И вот почему: как я могу ввести URL базового API в маршрутизатор?Должен ли я использовать что-то еще вместо шаблона маршрутизации?
Ниже я оставлю диаграмму UML и части кода.
public protocol Router: URLRequestConvertible {
var path: String { get }
var method: HTTPMethod { get }
var parameters: Parameters { get }
}
// this extension will provide a default implementation
// of the asURLRequest function
extension Router {
public func asURLRequest() throws -> URLRequest {
// my problem begins here, since I am using
// a static/global reference for the base url
let url = try BASE_URL.asURL()
let request = try URLRequest(url: url.appendingPathComponent(path), method: method)
guard !parameters.isEmpty else { return request }
return try JSONEncoding.default.encode(request, with: parameters)
}
}
Большое спасибо за ваше время и помощь.