問題タブ [autorest]

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 に答える
225 参照

swagger - 応答で AutoRest マップ クラスをサブオブジェクトに作成する

Swagger で文書化されていない大規模な API にクライアントを書き込もうとしていますが、swagger.json を書き込んで AutoRest を使用することは、それを達成するための良い方法であると考えました。この API は、次のように、各操作の応答データを、制御情報を含むより大きなオブジェクトにラップします。

この場合の「データ」は、「クライアント」の定義になります。AutoRest がこの「データ」を Client クラスにマップするように、200 OK 応答スキーマと swagger.json ファイルの定義を定義する方法はありますか?

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

visual-studio-2015 - Visual Studio 2015 の AutoRest パラメーター

Visual Studio 2015 で AutoRest を使用する場合 (プロジェクトを右クリック -> [追加] -> [REST API クライアント])、autorest.exe に渡されるパラメーターはどこにありますか?

Visual Studio から渡されるフラグを設定または変更するにはどうすればよいですか?

デフォルト設定ファイルはどこかにありますか?

ライブラリ プロジェクトでコード (C#) を生成する場合、AutoRest は非同期メソッドのみを生成し、同期メソッドは生成しません (これが必要です)。これは、Visual Studio によって渡されるパラメーターと関係があると思われます。

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

c# - Swashbuckle がドメイン タイプ情報なしで Swagger 定義ファイルを生成している (#/definition/domain-type 部分が欠落している)

Azure REST API アプリを発行すると、奇妙な結果が表示されます

1) 「すべての」レコードの Get メソッドは期待どおりに機能し、次のように生成されます。

2) Get by idUpdateDeleteおよびCreateメソッドの場合object、ドメイン オブジェクトの代わりに生成されます。

その結果、この Delete、Update、Create、および GetById メソッドを使用すると、サービスが機能しません。object手動でそれぞれのドメイン タイプに置き換えると、期待どおりに動作しますが、サービスを公開するたびに間違ったコードが再作成されます...

SwaggerConfig.cs (IncludeParameterNamesInOperationIdFilterたとえば有効) からいくつか試してみましたが、この場合は役に立たないようです。

これを引き起こしている原因とそれを処理する方法についてのアイデアはありますか?

DateTimePS asDateTimeOffset?byteas を生成するなど、もっと不快な動作に気付きましたが、それは我慢byte[]できます。定期的に戦いたくないのは、生成されたすべてのコードを調べて、object型を適切なドメイン型に変更することです。この場合、コンパイラは役に立ちません...

編集

@olydis からのコメントによると、生成された swagger 定義ファイルに form の戻り値の型定義が欠落していることが判明しました$ref, "#/definition/domain-type"

MVA コースでは、Azure App Service の習得(モジュール 4. ディスカバリーの統合のデモンストレーション、3:33 前後) に、生成された Swagger 定義ファイルのサンプルが表示され、これらの型定義が存在します。Swashbuckle がこの情報を生成しない原因は何ですか? 最新の Swashbuckle バージョン 5.xx を持っています。Swashbuckle が Swagger ファイルを正しく生成するために、ドメイン タイプが満たさなければならない前提条件はありますか?

Swagger 定義ファイル

編集#2

現在の回避策

REST API クライアントを生成する前に、生成された Swagger 定義ファイルを手動で編集する

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

c# - 動的メンバー呼び出しの汎用拡張メソッド

クラスのメンバー関数を動的に呼び出して、指定された型を返すことができる汎用拡張メソッドを構築しようとしています。背景によっては、これが一般的な問題です。

Autorest を使用して、swagger API 用のクライアント ライブラリを生成しています。API 内の一部の GET ルートは、応答の HTTP ステータス コードに応じて異なるオブジェクトを返すため、メソッド呼び出しは返さobjectれ、開発者はオブジェクト自体をキャストする必要があります。このキャストを一般的な方法で行うための便利なラッパーを作成しようとしています。

以下は、まとめられる典型的な関数シグネチャの例です。

object IPet GetPets(string petName)

このメソッドは、HTTP ステータス コードに応じて、いくつかのオブジェクト タイプを返す場合があることに注意してください。たとえば、200 はオブジェクトを返しDogますが、404 はオブジェクトを返す場合がありCatます。

これは、次のように、Autorest によって生成されたクライアント ライブラリを通じて呼び出されます。

この手動キャスト機能をもう少し直感的なものにすくい上げたいと思います。これが私が考えていることです:

このシナリオでは、'Dog' 型のオブジェクト以外を返すと、例外がスローされます。これが私の実装の試みです:

ここでの問題は、関数と引数を汎用拡張メソッドに渡すことです。さまざまな API 呼び出しで必要となる可能性のあるさまざまな数の引数を知らずに、どのようにExpression<Action<Tin, Targ>>一般的に定義できますか? Expression<Action<T1, T2, T3>>さまざまな長さの引数リストに対応するには、この関数などを複製する必要があるように思えます。

何が起こっているのかを簡単に確認できるように、人々が API と対話するための表現力豊かな方法が必要です。ただし、このメカニズムは、今後のさまざまな API の変更に対して堅牢である必要があります。私の現在の目標は、一般的なオブジェクトのキャストとエラー チェック操作をカプセル化する方法を提供することです。これを行うより良い方法はありますか?今のところ、サーバー側のswagger docは変更できないという前提で作業しています。

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

c# - Autorest.exe と ADD->Rest API Client を使用した場合の異なるクライアント出力

Swagger を使用して WebAPI のクライアント コードを生成しようとしています。私は通常、(WebAPI をデプロイした後に) メタデータ json ファイルをダウンロードし、クライアント クラス ライブラリのオプション "Add->Rest API Client.." を使用してこれを行います。

追加 -> Rest API Client

これにより、目的のプロジェクトにクライアント ライブラリが生成され、正常に動作します。しかし、Autorest.exe を使用してこのプロセスを自動化しようとしています。以下のように、クライアントコードを生成するためのパラメーターを使用してAutorest.exeを実行する小さなコードを作成しました。

しかし、新しく生成されたクライアント コードは機能せず (ビルドされず)、Visual Studio で GUI オプションを使用したときに出力として得られるものとは異なります。

新しく生成されたコードをビルドしようとすると、 .csファイルごとに次のエラー メッセージが表示されます。

完全に実行され、GUI が生成するものと一致するクライアント コードの自動生成について助けが必要です。前もって感謝します。

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

asp.net - WebApi と Swagger

私はasp.net webapiを使用しており、swaggerを使用してAutoRest経由でWPFアプリ内にRestApiを作成しています。エラーが発生した場合に、返されたデータをどのように使用するかを理解するのに問題があります。

私のコントローラーは次のとおりです。

たまたま AutoMapper のエラーを元に WebApi 内でエラーが出ていたのですが、飲み込んでしまいました。応答でエラー メッセージが返されます。これはすばらしいことです。

この呼び出しの現在の AutoRest コードは次のとおりです。

ご覧のとおり、int を期待しています。コメントを外すと

int の戻り値の型は object になります。

本当の質問です。WPF から WebApi へのサービス呼び出しは次のとおりです。

オブジェクトが返された場合、エラーが発生したかどうか、または単純な int (成功した) が返されたかどうかを確認するにはどうすればよいですか。

前もって感謝します。スコット