【解決方法】C# リフィット – Swagger ドキュメントから C# インターフェイスとモデルを作成するためのコンバーターはありますか

プログラミングQA


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 クライアント コード ジェネレーター

コメント

タイトルとURLをコピーしました