4

会社のプロジェクトの REST API をサポートする C# ラッパーを作成しました。ただし、これらの API は現在変更されています。URL (URL にバージョン番号が導入される可能性があります) と、期待して返されるデータ オブジェクトに関してです。

C# ラッパーでさまざまなバージョンの REST API をサポートするためのベスト プラクティスを知りたいです。

また、コード設計とクラス定義の観点から、1 つのラッパーがさまざまなバージョンの API とシームレスに連携できるようにするにはどうすればよいでしょうか。また、将来の新しいバージョンの API も簡単にサポートできるように、拡張可能にする必要があります。 .

私が作成した c# ラッパーは、Web サービス API を使用しています。私はすでに RestSharp クライアントを使用して、C# ラッパーで Web サービス API を使用しています。

4

2 に答える 2

8

あなたが求めているものには微妙な奇妙さがあります。あなたが述べたことを繰り返します:

1)組織には同じサービスの複数のバージョンがあります。おそらく、ボブが提案したように、/ current / api ... / v1 / api ... / v2 /api...などのように確立されます。あるいは他のパターンかもしれません。

2)単一のC#ライブラリが異なるバージョンのそれぞれを認識できるようにする必要があります。

奇妙なのはこの2番目の部分です。通常、クライアント側のライブラリは特定のバージョンのみを対象とします。サービスの新しいバージョンが古いバージョンと下位互換性があるか、新しいURLで分離されていることを確認するのは、サーバーの責任です。

これを自問してみてください。同じサービスの複数のバージョンを認識しているこのライブラリを構築する場合、ライブラリの利用者にはどのように見えるでしょうか。使用するバージョンを具体的に指示する必要がありますか?それは私が知っていなければならないことを期待する懸念ではありません。

var client = new MyClient();
client.DoSomething();   // Makes sense    
client.DoSomethingV2(); // Huh?
于 2012-10-01T18:50:34.480 に答える
2

API バージョンを設定し、現在のバージョンをたとえばバージョン 1 のままにしてから、次のような v2 を追加します

/current/api?id=x....
/version2/api?id=x...

これにより、API を更新して新しい機能をサポートできるようになり、古いバージョンの廃止計画を設定できます。

こうすることで、緊急事態に陥ることなく、顧客を新しいシステムに移行させることができます。

于 2012-10-01T16:12:47.617 に答える