Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# Refit - Is there any converter for creating C# Interface and model from Swagger document

I'm creating automatic type-safe REST API (Refit) from Swagger document. I'm Creating Interface and model class manually like below. Is there any tool to to generate like this?

Swagger file:

"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"
                }
              }
            }
          }
        }
      }
    }
}

Interface code:

        /// <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);

Model Class:

[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!;
    }

I'm having huge number of Swagger files. So I want to do this dynamically, Please help me if anyone know.

like image 365
Durga Ganesh Avatar asked Nov 17 '25 05:11

Durga Ganesh


1 Answers

You can Generate Refit interfaces from OpenAPI specifications using a tool called Refitter.

You can do this via the command line using Refitter directly or from Visual Studio using the extension REST API Client Code Generator

like image 184
Christian Resma Helle Avatar answered Nov 19 '25 22:11

Christian Resma Helle



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!