[ad_1]
Swagger ドキュメントからタイプ セーフな自動 REST API (Refit) を作成しています。 以下のように、インターフェイスとモデルクラスを手動で作成しています。
膨大な数の Swagger ファイルがあります。 だから私はこれを動的にやりたいのですが、誰かが知っていれば助けてください。
私が試したこと:
以下のように、インターフェイスとモデルクラスを手動で作成しています。
Swagger file: <pre>"paths": { "/configuration/v1/devices/{device_serial}": { "get": { "tags": [ "Devices" ], "summary": "Get variablised template for a Switch.", "description": " Response information.", "x-deployed": true, "operationId": "api.devices.get_device", "produces": [ "multipart/form-data" ], "parameters": [ { "in": "path", "name": "device_serial", "description": "Serial number of the device.", "required": true, "type": "string" } ], "responses": { "200": { "description": "Successful operation.", "schema": { "type": "object", "properties": { "total": { "type": "integer" }, "data": { "type": "string" } } } } } } } }
インターフェイス コード:
/// <summary> /// Get variablised template for a Switch. /// </summary> /// <remarks>Response information</remarks> /// <exception cref="Swagger.Client.ApiException">Thrown when fails to make API call</exception> /// <param name="deviceSerial"></param> /// <param name="cancellationToken"></param> /// <returns>Task of String</returns> [Get("/configuration/v1/devices/{device_serial}")] Task<DevicesResponse> GetDeviceVariabilisedTemplateAsync( [AliasAs("device_serial")] string deviceSerial, CancellationToken cancellationToken = default);
モデル クラス:
[DataContract] public class DevicesResponse { [DataMember(Name = "total", EmitDefaultValue = false)] public int? Total { get; set; } = default!; [DataMember(Name = "data", EmitDefaultValue = false)] public string? Data { get; set; } = default!; }
解決策 1
クイックGoogleが表示されました Swagger コード生成 | スワガー[^] これは、OpenAPI 仕様からモデルを生成するために使用できます。 どうやらそれはオープンソースであり、同様に無料で使用できるので、探しているものを達成できるかもしれません.
また、OpenAPI 自体にも生成ツールのリポジトリがあります。 OpenAPITools/openapi ジェネレーター[^] これも実行可能なオプションかもしれません。 検索する必要があったのは、「Swagger からの C# ビルド モデル」だけでした。
解決策 2
あなたはできる OpenAPI 仕様から Refit インターフェイスを生成する というツールを使って リフター
コマンドラインからこれを行うことができます リフター 直接または拡張機能を使用して Visual Studio から REST API クライアント コード ジェネレーター
[ad_2]
コメント