How to generate asp net core 2 controllers from openapi 3 0 schema


ASP.NET is a popular programming used for building web applications. In this article, we will explore how to generate ASP.NET Core 2 controllers from an OpenAPI 3.0 schema. This can be a useful approach when you have an existing OpenAPI specification and want to quickly generate the corresponding controllers in your ASP.NET Core 2 application.

Step 1: Install Required Packages

Before we can generate the controllers, we need to install some required packages. Open your ASP.NET Core 2 project and navigate to the project's root directory in the terminal or command prompt. Run the following command to install the required packages:

 add  NSwag.AspNetCore

Step 2: Generate Controllers

Once the required packages are , we can proceed with generating the controllers. We will use the NSwag.AspNetCore package to accomplish this. NSwag is a powerful tool that allows us to generate code, server stubs, and API documentation from an OpenAPI specification.

To generate the controllers, we need to create a new class in our ASP.NET Core 2 project. Let's name it OpenApiGenerator.cs. In this class, we will define a method that will generate the controllers on the OpenAPI schema.

public class OpenApiGenerator
    public static void GenerateControllers()
        var document = OpenApiDocument.FromUrlAsync("path/to/openapi/specification.json").Result;
        var generator = new WebApiControllerGenerator(document, new WebApiToAspNetCoreOptions());

        var code = generator.GenerateFile();
        File.WriteAllText("path/to/output/controllers.cs", code);

In the above code, we first load the OpenAPI specification from a URL using the OpenApiDocument.FromUrlAsync method. Make sure to replace path/to/openapi/specification.json with the actual path to your OpenAPI specification file.

Next, we create an instance of the WebApiControllerGenerator class and pass the loaded document and . We then call the GenerateFile method to generate the controller code as a string.

Finally, we write the generated code to a file using the File.WriteAllText method. Replace path/to/output/controllers.cs with the desired path and filename for the generated controllers.

Step 3: Run the Generator

Now that we have defined the method to generate the controllers, we need to call it from our ASP.NET Core 2 application. Open the .cs file in your project and add the following code to the ConfigureServices method:


This will ensure that the controllers are generated when the application starts up. Make sure to include the necessary using statements at the top of the file:

using System.IO;
using NSwag;
using NSwag.CodeGeneration.CSharp.Models;
using NSwag.CodeGeneration.CSharp.;


Generating ASP.NET Core 2 controllers from an OpenAPI 3.0 schema can greatly speed up the development process. By using the NSwag.AspNetCore package, we can automate the generation of controllers based on the API specification. This allows us to focus on the business logic of our application rather than manually writing boilerplate code.

Remember to always keep your OpenAPI specification up to date and regenerate the controllers whenever there are changes to the API. This ensures that your controllers accurately the API endpoints and data models defined in the specification.

Rate this post

Leave a Reply

Your email address will not be published. Required fields are marked *

Table of Contents