問題タブ [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_v1
andに変更する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
ます。などのバージョン フォルダーを含むアプリを作成しました。各バージョン フォルダーには、、、およびファイルが含まれます。serializers
views
urls
apis
v1
v2
serializers
views
utils
urls
ここで、バージョン管理について何を考慮する必要があるかを知る必要がありますか? をバージョン管理する必要が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_url
forum_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
を使用してこれにアクセスします
ここで私が従うことができる最善のアプローチを教えてください。