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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With