url主机映射为swift中的config

时间:2016-05-20 09:52:58

标签: ios swift retrofit

我们有许多不同的api与不同的主机。我想知道url主机映射有一个简单(最好)的方法吗?

我可以使用字典或guava(如Multimap)对host-urls进行一对多的映射。

如下

["www.google.com":["/path1","/path2"]]
["www.bing.com":["/path1","/path2"]]
Net.get(/path1)

但反向进展无法保证主持人的独特性

我现在正在使用

struct GoogleUrls{
    static let URL1 = "/path1"
    static let URL2 = "/path2"
}

struct BingUrls{
    static let URL1 = "/path1"
    static let URL2 = "/path2"
}

class GoogleApi{
    let host = "www.google.com"
    func get(path:String){
//        Net.get(path,host)
    }
}

class BingApi{
    let host = "www.bing.com"
    func get(path:String){
//        Net.get(path,host)
    }
}

class Api1Google:GoogleApi{
    func callUrl1(){
        super.get(GoogleUrls.URL1)
    }
    func callUrl2(){
        super.get(GoogleUrls.URL2)
    }
}

class Api1Bing:BingApi{

    func callUrl1(){
        super.get(BingUrls.URL1)
    }
    func callUrl2(){
        super.get(BingUrls.URL2)
    }
}

我不想在这里手动分配主机,是否有更优雅的方式(使用属性?)?

1 个答案:

答案 0 :(得分:0)

如果您使用的是Objective-C,我可以查看SwiftConfigManager或CSConfigurationManager。我的团队成员之一刚刚编写了swift解决方案,因为我们在不同的配置中有不同的基本URL,并且能够使用不同的环境配置创建构建方案。

在过去的5年中,我们在许多项目上成功使用了CSConfigurationManager,而不仅仅是网址,包括应用程序设置,颜色,排序过滤器,甚至是ui配置标志,以启用/禁用不同构建方案中的组件。 / p>

https://github.com/marcammann/SwiftConfigManager

https://github.com/marcammann/CSConfigurationManager