RestEase-Client-Generator

A Visual Studio Extension to generate a RestEase compatible client based on a Swagger / OpenAPI specification files

MIT License

Stars
24
Committers
4

RestEase-Client-Generator

Generate a RestEase compatible client (Interface & Models) based on a Swagger / OpenApi or RAML specification.

1️⃣ NuGet Package

2️⃣ dotnet tool

Installation & Usage

3️⃣ Visual Studio Extension

Features

  • Supports Visual Studio 2017 and 2019
  • Add New RestEase API Client to a project from an OpenAPI specification URL (e.g https://petstore.swagger.io/v2/swagger.json)
  • Define custom namespace for the generated file
  • Auto-updating of generated code file when changes are made to the specification file (.json, .yml, .yaml, .raml)
  • This Visual Studio Extension will automatically add the required nuget packages that the generated code depends on.

Installation & Usage

Options

See https://github.com/StefH/RestEase-Client-Generator/wiki/Options


Demo

Blazor WebAssembly Demo

Example

Input Yaml file 'PetStore.yaml'

Excerpt...

paths:
  /pet:
    post:
      tags:
        - pet
      summary: Add a new pet to the store
      description: ''
      operationId: addPet
      consumes:
        - application/json
        - application/xml
      produces:
        - application/xml
        - application/json
      parameters:
        - in: body
          name: body
          description: Pet object that needs to be added to the store
          required: true
          schema:
            $ref: '#/definitions/Pet'

(Full example).

Generate file 'PetStore.cs'

Excerpt...

namespace RestEaseClientGeneratorConsoleApp.PetStoreJson.Api
{
    public interface IPetStoreApi
    {
        /// <summary>
        /// Add a new pet to the store
        /// </summary>
        /// <param name="pet">A pet for sale in the pet store</param>
        [Post("/pet")]
        Task AddPetAsync([Body] Pet pet);

        // More methods ...
    }
}

namespace RestEaseClientGeneratorConsoleApp.PetStoreJson.Models
{
    public class Pet
    {
        public long Id { get; set; }

        // More properties ...
    }
}

(Full example).

Create a Client and call methods

var petStoreApi = RestClient.For<IPetStoreApi>("https://petstore.swagger.io/v2");

var findPetsByTags = await petStoreApi.FindPetsByTagsAsync(new[] { "cat" });

Screenshots

Add new specification and generate client code

Generate client code for existing .json, .yml or .yaml file

Credits