問題タブ [chopper]

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 投票する
2 に答える
488 参照

api - Flutter Chopper 401 renew & retry インターセプター

Flutter アプリで Chopper を使用しています。API から 401 応答ステータス コード (未承認) を取得した場合、別のエンドポイントを呼び出してトークンを更新し、それを安全なストレージに保存する必要があります。これが完了したら、すぐにリクエストを再試行する必要があります (ユーザーがトークンの有効期限が切れたことに気付かないようにするため)。これは Chopper のみで実行可能ですか、それとも他のパッケージを使用する必要がありますか?

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

flutter - ChopperClient フラッターに複数のコンバーターを追加する

さまざまな応答セットに対して json-annotation を使用して、さまざまな .g.dart クラスを作成しています。現在、リクエストを作成し、レスポンスをモデル クラスにマッピングするために Chopper Client を使用しているときは、コンバーターを作成しています。ただし、チョッパー クライアントに割り当てることができるコンバータは 1 つだけです。私が達成しようとしているのは、get_it パッケージを使用してチョッパー クライアントを初期化することです。異なるリクエストを行う際に、異なるコンバーターをチョッパークライアントに割り当てるにはどうすればよいですか。 これは、クラスの初期化に get_it パッケージが使用される基本クラスです。

base.dart

この ChopperService クラスから Get リクエストを作成し、HomeModelConverter を使用して応答を HomeModelResponse にマッピングします。この HomeModelConverter は、上記のチョッパー クライアント オブジェクトに割り当てられます。

home_api_service.dart

これは、HomeModelResponse 固有のコンバーター クラスです。decodeJson 関数内では、HomeModelResponse にデコードすることを明示的に言及しています。

home_model_converter.dart

これは、受信応答が自動的にマップされる HomeModelResponse です。

home_model_response.dart

上記のコードは home_api_service に対して正常に機能しており、適切な応答が得られています。 ここで、AddApiService などの別のサービスを作成したいと考えています。これには別のコンバーターがあります。チョッパー クライアントでコンバーターを動的に変更する方法。現在、HomeModelConverter は初期化時にハードコーディングされて割り当てられています。すべてのコンバーターに対して複数の ChopperClient を作成したくありません。ここで立ち往生。または、汎用コンバーターを作成するオプション

このアプローチが問題ないかどうか、またはフラッターに従うためのより良いアプローチがあるかどうかを誰かが提案できる場合。

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

flutter - Flutter Chopper: 複数のサービスを持つクライアントを作成する方法は?

現時点では、次のコードがあります。

次に、次のように呼び出します。

しかし、複数のサービスを受け入れていることがわかります...

どうにかしてコード量を減らすことはできますか? (そうでない場合は、このようなクラスをさらに 5 つ行うことになります...)

可能であれば、どのように、どのように使用しますか?

編集:

それはこのように動作します:

サービスを作成します。例:

ファイル: test_api.dart

クライアントを作成します。

次に、次のようにサービスを使用できます。