我有一個簡單的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位置。但我也不想爲每個想要與之交互的資源實例化一個專門的客戶端類。