我有一个简单的REST客户端,运行良好。在我的应用程序代码中,我做这样的事情:如何干净地编写抽象与RESTful资源交互?
restClient = new RestClient(configurationData)
restClient.get('/person/1') //Get Person
restClient.get('/equipment/auto/3') //Get an Auto
restClient.get('/house/7') //Get a House
行之有效,但事情变得更加复杂,我想从特定的资源位置离婚的应用程序代码。
我希望能写周围的服务,将存储资源位置,而不是要求我把它们放在我的应用程序代码的包装。我希望我的代码开始寻找更多这样的:
restClient = new RestClient(configurationData)
restClient.getPerson(1) //Get Person
restClient.getAuto(3) //Get an Auto
restClient.getHouse(7) //Get a House
我开始加入我RestClient
类里面这些包装,但它变得非常臃肿的速度非常快,而且它认为抽象应该在一个较高的水平。与我的客户混合资源细节也感觉不对。
所以,相反我子类RestClient
,并且每个资源有它自己的类。问题是,现在我要实例化一个新的客户端为每个不同的资源类型:
personRestClient = new PersonRestClient(configurationData)
personRestClient.get(1);
autoRestClient = new AutoRestClient(configurationData)
autoRestClient.get(3);
housesRestClient = new HousesRestClient(configurationData)
housesRestClient.get(7);
但现在我已经创建了一个新的Client
类各Resource
和我相当肯定这是一个非常糟糕的事情做。这也是一个痛苦,因为我必须将连接配置数据绑定到每个连接配置数据,而这应该只发生一次。
当我想为我的资源编写抽象概念时,是否有一个很好的示例或模式?我的基地RestClient
工作正常,但我不喜欢必须将我的应用程序代码中的服务器端API位置。但我也不想为每个想要与之交互的资源实例化一个专门的客户端类。