Refitter 0.1.5-alpha

This is a prerelease version of Refitter.
There is a newer version of this package available.
See the version list below for details.
dotnet tool install --global Refitter --version 0.1.5-alpha                
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest # if you are setting up this repo
dotnet tool install --local Refitter --version 0.1.5-alpha                
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=Refitter&version=0.1.5-alpha&prerelease                
nuke :add-package Refitter --version 0.1.5-alpha                

Build Smoke Tests NuGet

Refitter

Refitter is a CLI tool for generating a C# REST API Client using the Refit library.

Usage:

To generate code from an OpenAPI specifications file, run the following:

$ refitter [path to OpenAPI spec file]

This will generate a file called Output.cs which contains the Refit interface and contract classes generated using NSwag

Here's an example generated output from the Swagger Petstore example

using Refit;
using System.Threading.Tasks;
using System.Collections.Generic;

namespace GeneratedCode
{
    public interface ISwaggerPetstore
    {
        [Put("/pet")]
        Task<Pet> UpdatePet([Body]Pet body);

        [Post("/pet")]
        Task<Pet> AddPet([Body]Pet body);

        [Get("/pet/findByStatus")]
        Task<ICollection<Pet>> FindPetsByStatus();

        [Get("/pet/findByTags")]
        Task<ICollection<Pet>> FindPetsByTags();

        [Get("/pet/{petId}")]
        Task<Pet> GetPetById(long? petId);

        [Post("/pet/{petId}")]
        Task UpdatePetWithForm(long? petId);

        [Delete("/pet/{petId}")]
        Task DeletePet(long? petId);

        [Post("/pet/{petId}/uploadImage")]
        Task<ApiResponse> UploadFile(long? petId, [Body]FileParameter body);

        [Get("/store/inventory")]
        Task<IDictionary<string, int>> GetInventory();

        [Post("/store/order")]
        Task<Order> PlaceOrder([Body]Order body);

        [Get("/store/order/{orderId}")]
        Task<Order> GetOrderById(long? orderId);

        [Delete("/store/order/{orderId}")]
        Task DeleteOrder(long? orderId);

        [Post("/user")]
        Task CreateUser([Body]User body);

        [Post("/user/createWithList")]
        Task<User> CreateUsersWithListInput([Body]ICollection<User> body);

        [Get("/user/login")]
        Task<string> LoginUser();

        [Get("/user/logout")]
        Task LogoutUser();

        [Get("/user/{username}")]
        Task<User> GetUserByName(string username);

        [Put("/user/{username}")]
        Task UpdateUser(string username, [Body]User body);

        [Delete("/user/{username}")]
        Task DeleteUser(string username);
    }
}

Here's an example usage of the generated code above

using Refit;
using System;
using System.Threading.Tasks;

namespace GeneratedCode;

internal class Program
{
    private static async Task Main(string[] args)
    {
        var client = RestService.For<ISwaggerPetstore>("https://petstore3.swagger.io/api/v3");
        var pet = await client.GetPetById(2);

        Console.WriteLine($"Name: {pet.Name}");
        Console.WriteLine($"Category: {pet.Category.Name}");
        Console.WriteLine($"Status: {pet.Status}");
    }
}

The RestService class generates an implementation of ISwaggerPetstore that uses HttpClient to make its calls.

The code above when run will output something like this:

Name: Gatitotototo
Category: Chaucito
Status: Sold

System requirements

.NET 7.0

For tips and tricks on software development, check out my blog

If you find this useful and feel a bit generous then feel free to buy me a coffee ☕

Product Compatible and additional computed target framework versions.
.NET net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last updated
1.5.3-preview.68 55 4 days ago
1.5.3-preview.67 563 2 months ago
1.5.2 882,804 2 months ago
1.5.1 60,591 2 months ago
1.5.1-preview.66 52 2 months ago
1.5.0 87,274 2 months ago
1.5.0-preview.65 407 4 months ago
1.5.0-preview.64 72 4 months ago
1.5.0-preview.63 69 4 months ago
1.4.1 928,916 4 months ago
1.4.1-preview.62 169 5 months ago
1.4.0 356,481 5 months ago
1.4.0-preview.61 113 6 months ago
1.3.2 327,415 6 months ago
1.3.2-preview.60 59 6 months ago
1.3.1 48,995 6 months ago
1.3.0 96,836 6 months ago
1.2.1-preview.59 70 6 months ago
1.2.1-preview.58 79 7 months ago
1.2.1-preview.57 61 7 months ago
1.2.1-preview.56 79 7 months ago
1.2.1-preview.55 3,241 7 months ago
1.2.1-preview.54 4,716 7 months ago
1.2.0 560,986 8 months ago
1.2.0-preview.53 5,186 8 months ago
1.2.0-preview.52 1,850 8 months ago
1.1.3 359,852 8 months ago
1.1.3-preview.51 58 8 months ago
1.1.2 25,469 8 months ago
1.1.2-preview.50 55 8 months ago
1.1.2-preview.49 68 9 months ago
1.1.1 188,770 9 months ago
1.1.1-preview.48 75 9 months ago
1.1.1-preview.47 72 9 months ago
1.1.1-preview.46 71 9 months ago
1.1.0.45-preview 108 9 months ago
1.0.2 238,567 9 months ago
1.0.1 48,354 10 months ago
1.0.0 245,330 5/3/2024
0.9.9.44-preview 95 4/29/2024
0.9.9 8,110 3/7/2024
0.9.8 3,698 2/27/2024
0.9.7 72,001 2/7/2024
0.9.6 264 1/29/2024
0.9.5 40,724 1/15/2024
0.9.4.43-preview 127 1/15/2024
0.9.4 32,095 1/12/2024
0.9.3.42-preview 159 1/10/2024
0.9.2 20,120 1/10/2024
0.9.1 3,903 1/9/2024
0.9.0 3,106 1/9/2024
0.8.7.41-preview 167 1/3/2024
0.8.7.40-preview 139 12/20/2023
0.8.7 55,042 12/18/2023
0.8.6.39-preview 156 12/14/2023
0.8.6.38-preview 171 12/14/2023
0.8.6 3,560 12/11/2023
0.8.5 55,906 11/23/2023
0.8.4 400 11/7/2023
0.8.3 270 10/31/2023
0.8.2 445 10/9/2023
0.8.1 901 10/4/2023
0.8.0 1,758 9/23/2023
0.7.5 2,738 9/7/2023
0.7.4 355 9/6/2023
0.7.3.37-preview 225 8/25/2023
0.7.3.36-preview 250 8/25/2023
0.7.3.35-preview 258 8/21/2023
0.7.3.34-preview 259 8/15/2023
0.7.3.33-preview 242 8/12/2023
0.7.3 2,035 8/26/2023
0.7.2.32-preview 221 8/7/2023
0.7.2 3,865 8/7/2023
0.7.1.31-preview 258 8/2/2023
0.7.1.30-preview 194 8/2/2023
0.7.1.29-preview 258 8/1/2023
0.7.1 710 8/3/2023
0.7.0.28-preview 181 7/28/2023
0.7.0.27-preview 286 7/28/2023
0.7.0.26-preview 264 7/27/2023
0.7.0.23-preview 248 7/27/2023
0.7.0.22-preview 301 7/27/2023
0.7.0.21-preview 240 7/27/2023
0.7.0.20-preview 282 7/27/2023
0.7.0 431 7/31/2023
0.6.3 1,201 7/22/2023
0.6.2 12,805 6/22/2023
0.6.1 342 6/20/2023
0.6.0 722 6/15/2023
0.5.30 506 6/12/2023
0.5.29 158 6/12/2023
0.5.28 171 6/10/2023
0.5.27 227 5/24/2023
0.5.26 292 5/11/2023
0.5.25 212 5/10/2023
0.5.3 201 5/5/2023
0.5.2 167 5/2/2023
0.5.1 180 5/2/2023
0.5.0 226 4/28/2023
0.4.2 246 4/24/2023
0.4.1 444 4/3/2023
0.4.0 325 3/24/2023
0.3.17 9,610 3/24/2023
0.3.16 269 3/22/2023
0.3.4 229 3/22/2023
0.3.3 320 3/17/2023
0.3.2 290 3/16/2023
0.3.1 259 3/14/2023
0.3.0 256 3/14/2023
0.2.4-alpha 281 3/1/2023
0.2.3-alpha 192 2/27/2023
0.2.2-alpha 231 2/25/2023
0.2.1-alpha 256 2/25/2023
0.2.0-alpha 207 2/24/2023
0.1.5-alpha 262 2/18/2023
0.1.4-alpha 304 2/17/2023
0.1.3-alpha 285 2/17/2023
0.1.2-alpha 255 2/17/2023