問題タブ [api-versioning]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - プロジェクトを整理するためのオプション: JAX-RS API、ServiceLocator、およびリモート EJB
API プロジェクトのアーキテクチャに使用できるオプションを見つけようとしています。
JAX-RS バージョン 1.0 を使用して API を作成したいと考えています。この API は、大きくて古い複雑なアプリケーションからリモート EJB (EJB 3.0) を使用します。私はJava 6を使用しています。
これまでのところ、私はこれを行うことができ、動作します。しかし、私は解決策に満足していません。私のパッケージの処分を参照してください。私の懸念は、コードの後に説明されています。
の例com.organization.api.v1.rs.UserV1RS:
の例com.organization.api.v1.services.UserV1Service:
の例com.organization.api.services.UserService:
私のプロジェクトのいくつかの要件:
- API には、v1、v2 などのバージョンがあります。
- バージョン管理された同じ Service の異なる API バージョンは、コードを共有できます:
UserV1ServiceおよびUserV2Serviceを使用しUserServiceます。 - 異なるバージョンのサービスの異なる API バージョンは、コードを共有できます:
UserV1ServiceおよびOrderV2Serviceを使用しAnotherServiceます。 - 各バージョンには独自のビュー オブジェクトがあります (
UserV1VOではありませんUserVO)。
上記のコードについて私を悩ませているのは:
- この
ServiceLocatorクラスは私にとって良いアプローチではありません。このクラスは古いライブラリのレガシー コードを使用しており、このクラスがどのように機能するかについて多くの質問があります。の使用方法ServiceLocatorは私にとっても非常に奇妙であり、この戦略は単体テスト用のサービスをモックするのには適していません 。新しい ServiceLocator を作成するか、依存性注入戦略 (または別のより良いアプローチ) を使用したいと考えています。 - この
UserServiceクラスは、 などの別の「外部」サービスによって使用されることを意図していませんOrderService。のみですUserVxService。しかし、将来的には、OrderServiceいくつかのコードを使用したいと思うかもしれませんUserService... - 最後の問題を無視したとしても、 を使用すると、コード内で
ServiceLocator多くのことを行う必要があります。lookups循環的な依存関係 (serviceOne をルックアップする serviceTwo が serviceThree をルックアップする serviceOne をルックアップする) が作成される可能性は非常に高くなります。 - このアプローチでは、 のような VO を
UserV1VOバージョン管理されていないサービス (com.organization.api.services) で使用できますが、これは実現できません。優れたアーキテクチャは、許可されていないものを許可しません。これを避けるために、新しいプロジェクトを作成してそこにapi-services置くという考えがあります。com.organization.api.servicesこれは良い解決策ですか?
それで... アイデア?
c# - 同じ名前の 2 つの型を同時に使用できますか?
インターフェイスInterfaces.dllを含む厳密な名前のアセンブリのバージョン 1 があるとします。IPlugin
多くのプラグインが実装されており、すべてがスムーズに実行されます。
ある日、ロードしたプラグインを確認できるように、プラグインに名前を付ける必要があると判断されました。したがって、Interfaces.dll以下を含むバージョン 2 を生成します。
すべてのプラグイン実装者がプラグインをすぐに更新することは期待できないため、古いプラグイン バージョンに "Unknown" の PluginName を追加するアダプターを作成したいと考えています。そのようなアダプターを実装する方法はありますか? 私はそれが次のように見えることを望みます:
しかし、どちらも と呼ばれているためIPlugin、これは機能しません。IPlugin別の方法として、名前をIPlugin_v1andに変更するIPlugin_v2か、同様の名前空間の名前変更を行うこともできますが、これには、新しいバージョンの があるたびにインターフェイス (または名前空間) の名前Interfaces.dllを変更する必要があり、実装者はインターフェイスへのすべての参照を変更する必要があります。 (または名前空間) を最新のアセンブリ バージョンに更新します。だから、もう一度質問:
IPlugin名前や名前空間を変更せずに、この種のアダプターを実装することは可能ですか?
ruby-on-rails - 「api_version の設定は非推奨です。v2 のみがサポートされます」というメッセージ
「rails console」を実行した後、次のメッセージが表示されました。
私の無知を許してください。
rest - 間違った API バージョンで返される HTTP ステータス コードは?
シンプルなバージョン管理された RESTful API を設計しています。Acceptバージョンは、ヘッダーのメディア タイプの一部として指定されます。これらの場合の適切な HTTP ステータス コードは何だろうか。
バージョンはまだサポートされていません。
/li>サポートされなくなったバージョン
/li>
django - Django で API のバージョン管理を行う際に、何をバージョン管理する必要がありますか
現在、プロジェクトの API バージョン管理を行っています。10 個のアプリと 45 個の API エンドポイントがあります。各アプリにはmodels、、、、、、tasksおよびファイルがutilsありconstantsます。などのバージョン フォルダーを含むアプリを作成しました。各バージョン フォルダーには、、、およびファイルが含まれます。serializersviewsurlsapisv1v2serializersviewsutilsurls
ここで、バージョン管理について何を考慮する必要があるかを知る必要がありますか? をバージョン管理する必要がtasksありutilsますconstantsか? そして、どのようにバージョン管理を行うべきmodelsですか?
これを整理するのを手伝ってください。
ios - Swift で OS バージョンではなく、シンボルの可用性を確認するにはどうすればよいですか?
私はフォームのコードを持っています
は
... 可能?
後者の方が私の意図をよりよく表しています。値builtInDualCameraが存在する場合は、それを使用してください。それが iOS 10.1 で導入されたのか、.2 で導入されたのか、.3 で導入されたのかはどうでもいいことでした。
ruby-on-rails - Rails API のバージョン管理と forum_url
locationバージョン管理された API にヘッダーを追加しようとしました。
代わりにrender location: forum使用するヘルパーをオーバーライドするにはどうすればよいですか?v1_forum_urlforum_url
asp.net - .NET アプリケーションでの API のバージョン管理
.Net Core フレームワークでの API のバージョン管理について明確にする必要があります。
私のクライアントは、バージョンがルーターレベルで処理されることを望んでいます。お気に入り
https://www.somedomain.com/api/1/sample/versionを使用してこれにアクセスします
IIS で、デフォルトの Web サイトの下に「api」というアプリケーションを作成し (URL のパス「api」はここで処理されます)、ここでコードをホストします。
API のバージョン管理を行うために、ここに従うことができるより良い方法は何ですか。
これはできますか?
/li>IIS のアプリケーションの下にアプリケーションを作成することは可能ですか。お気に入り、
デフォルト Web サイト -> api -> 1 -> API バージョンが記載されていないコード
既定の Web サイト - > api -> 2 -> API バージョンが記載されていない更新されたコード
- または、IIS でアプリケーションとしてバージョンを作成し、各アプリケーション バージョンの下にコードを展開できますか。お気に入り、
既定の Web サイト - > 1 -> API バージョンが記載されていないコード
既定の Web サイト - > 2 -> API バージョンが記載されていない更新されたコード
これは、私が好まない API URL を変更することになります。私はまだ同じURIを使いたいです。https://www.somedomain.com/api/1/sample/version
を使用してこれにアクセスします
ここで私が従うことができる最善のアプローチを教えてください。