問題タブ [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.

0 投票する
1 に答える
102 参照

c# - コードのバージョン管理とメンテナンス

私は、Web サーバーとアプリ サーバー、そしてデータ レイヤーを備えたプロジェクトを手にしています。

私のさまざまなクライアントが使用するソフトウェアのバージョンを頻繁に作成する必要があります。

場合によっては、API ルートのみが変更されることもあれば、すべてがエンド ツー エンドで変更されることもあれば、アプリ サーバーとデータ レイヤーのみが変更されることもあります。

私が抱えている問題は、このような状況でコードをバージョン管理する方法です。私ができることの 1 つ、つまり解決策は、コードを分岐して、必要に応じて作業することです。これは、バージョンを作成し、それに応じてクライアントに提供することができます。これに関する問題は、コードのメンテナンスであり、頻度が増加した場合、私はリポジトリでコードのバージョンを維持するという問題があります。

API、ビジネス ロジック、またはデータとスクリプトをバージョン管理するための最良の方法は何ですか?

乾杯!

0 投票する
2 に答える
728 参照

python - バージョン管理による DRF テスト ビュー: バージョン管理された URL の取得

以前にビューのテストをいくつか作成しました。そのように

API のバージョン管理を追加するように依頼されるまで、すべてがうまく機能していました。

DRF はネイティブでバージョン管理をサポートしていますhttp://www.django-rest-framework.org/api-guide/versioning/ ので、私はそれを使用して、名前空間ベースのバージョン管理を API に追加しました

ここで、バージョニングをサポートするために、ビューの単体テストを書き直す必要があります。

この問題は、 を介してバージョン管理された URL を取得するためにreverse、使用する必要があることです。

ドキュメントのように。

requestしかし、私は自分でオブジェクトを作成していて、それを作成するために必要なバージョン管理された URL であるため、テストにはオブジェクトがありません。

私は何をすべきか?

PS DRF を使用せずにバージョン管理を実装し、ビュー デコレータといくつかのユーティリティ関数を使用してこの問題を解決できますが、車輪を再発明しているので気分が悪くなります。また、いくつかのエッジケースも忘れる可能性があります。

0 投票する
1 に答える
120 参照

ruby-on-rails - アクティブなモデルの API バージョン管理

モデルユーザーがいるアプリケーションを構築しています。アプリケーションの最初のバージョンでは、ユーザーの携帯電話番号の列はありません。後のバージョンでは、それが存在する必要があります。モデルにバージョン管理を追加する方法はありますか?アクティブ レコードの検証は、特定のバージョンに書き込むことができます。

0 投票する
1 に答える
500 参照

ruby-on-rails-4 - Grape Gem を使用してシリアライザを自動ロードできない

私はAPIを構築しています:

  • ルビー2.2
  • レール 4.2.6
  • ぶどう宝石 0.16.2
  • active_model_serializers-gem 0.10.2
  • grape-active_model_serializers-gem (マスターから 1.4)

ここで説明されているように、API バージョニングを導入しようとするまで、私の JSON シリアライザーはうまく機能します: https://github.com/ruby-grape/grape-active_model_serializers

バージョン管理されていないシリアライザー:

バージョン管理されたシリアライザー:

エラーメッセージは次のとおりです。

LoadError (定数 SignupSerializer を自動ロードできません。定義するには /Users/username/GitHub/AppName/app/serializers/mobile/v1/signup_serializer.rb が必要です): app/api/mobile/logger.rb:16:in block in call' app/api/mobile/logger.rb:15:incall'

API 組織:

ここに画像の説明を入力

base.rb:

v1/root.rb:

API/v1/signup.rb:

何か案は?

0 投票する
2 に答える
396 参照

ruby-on-rails - Rails APIのバージョン管理 - コントローラーアクションが存在する場合はそれを呼び出しますか?

現在、Api::V1 と Api::V2 という 2 つの API 名前空間があります。

私は V2 を一度に実装するのではなく、時間をかけてゆっくりと実装する予定です。ただし、その一部が存在するため、クライアントがすべての HTTP 要求を V2 URL に送信し、その特定のエンドポイントがまだ実装されていない場合はサーバーに処理させることができればと思います。

V2 コントローラーにアクションがない場合、V2 要求を V1 コントローラーにルーティングする方法はありますか?

簡単な例:

ルート:

次のエンドポイントが生成されます。

  1. /api/v1/items を取得
  2. POST /api/v2/items

V2 コントローラーにはまだこのメソッドがないため、GET 要求を /api/v2/items に送信し、Api::V1:ItemsController#index を呼び出すことが目標です。

0 投票する
1 に答える
5075 参照

amazon-web-services - AWS API Gateway を使用した API のバージョニング

API Gateway + Lambda を使用した実行可能なバージョニング シナリオの実装に問題があります。私の要件は、API レベルでのメジャー バージョン管理と、サービス レベルでのマイナー バージョン管理です。私の環境も複数のアカウントに分散しているため、ステージングは​​環境伝播のオプションではありません。AWS API Gateway を使用して API 管理の実装に成功した人はいますか?

0 投票する
0 に答える
112 参照

django - API バックエンドのバージョニング アプローチ

API(モバイルデバイスによって消費される)の作成にdjango restフレームワークを使用しています。リクエストされた各ビューの request.version からバージョンを取得します。これらの API はすべて、時間の経過とともに要件が大幅に変化するシナリオで使用されています。すべてのビューは内部的に utils メソッド (utils.py 内) を呼び出します。

バージョンの変更に応じてユーティリティ コードを管理するための最良の方法は何ですか? バージョン変更の数が約 50 であると仮定すると、if else の数は非常に汚く見えるでしょうか?

また、上記の utils メソッドが複数の django アプリで使用されている場合のバージョン管理のケースを処理する方法。

ユースケースを解決するdjangoパッケージはありますか?