私はうまく動作する単純な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
クラスの内部でこれらのラッパーを追加し始めたが、それは非常に速く非常に肥大化しました、そしてそれは抽象化は、より高いレベルであることを感じました
restClient = new RestClient(configurationData)
restClient.getPerson(1) //Get Person
restClient.getAuto(3) //Get an Auto
restClient.getHouse(7) //Get a House
:私は私のコードをよりこのように探し始めることを期待します。クライアントとリソースの詳細を混在させることも間違っていました。
代わりに、RestClient
をサブクラス化し、各リソースには独自のクラスがあります。問題は、今、私はすべての異なるリソースタイプの新しいクライアントをインスタンス化しなければならないということです。
personRestClient = new PersonRestClient(configurationData)
personRestClient.get(1);
autoRestClient = new AutoRestClient(configurationData)
autoRestClient.get(3);
housesRestClient = new HousesRestClient(configurationData)
housesRestClient.get(7);
しかし、今、私は、各Resource
のための新しいClient
クラスを作成しましたし、私は非常に悪いことがあることがかなり確信しています行う。これは一度だけ行う必要があるときに、私は接続構成データをそれぞれに結びつけなければならないので、痛みもあります。
私のリソースの抽象概念を書くときには、私が従うべき良い例がありますか?私のベースRestClient
は正常に動作しますが、私はアプリケーションコードにサーバー側のAPIの場所を入れなければならないのは嫌です。しかし、私はまた、私がやりとりしたいと思う各リソースのための1つの特殊なクライアントクラスをインスタンス化する必要はありません。