NSwag is a Swagger 2.0 API toolchain for .NET, TypeScript and other platforms, written in C#. The Swagger specification uses JSON and JSON Schema to describe a RESTful web API. The project provides tools to automatically generate client code from these Swagger specifications and integrate this generation into existing processes.
Ways to use the toolchain:
- Simple to use Windows GUI, NSwagStudio
- In your C# code, via NuGet
- Via command line (Windows, Mac and Linux support through Mono)
- Generate code with T4 templates in Visual Studio
Swagger Generators:
- ASP.NET Web API to Swagger
- Types from .NET assemblies
Code Generators:
- TypeScript Client
- SwaggerToTypeScriptClientGenerator
- Available templates/supported libraries:
- JQuery with Callbacks,
JQueryCallbacks
- JQuery with promises
JQueryPromises
- AngularJS using $http,
Angular
- Angular 2 using the http service,
Angular2
- JQuery with Callbacks,
- CSharp Client
- SwaggerToCSharpClientGenerator
- With INotifyPropertyChanged supporting DTOs
- CSharp WebAPI Controllers (contract first/schema first development)
- SwaggerToCSharpControllerGenerator
- Generates Web API Controllers based on a Swagger specification
- SwaggerToCSharpControllerGenerator
Downloads
- Download latest NSwagStudio MSI installer (Windows Desktop application)
- Download latest NSwag command line tools and NSwagStudio as ZIP archive
- Download latest Build Artifacts from AppVeyor (command line tools and NSwagStudio binaries)
This project uses NJsonSchema for .NET for JSON Schema, C# and TypeScript class/interface generation.
The following code shows how to read a Swagger specification and generate C# client classes to call the described web services:
var service = SwaggerService.FromJson("...");
var settings = new SwaggerToCSharpClientGeneratorSettings
{
ClassName = "MyClass",
Namespace = "MyNamespace"
};
var generator = new SwaggerToCSharpClientGenerator(service, settings);
var code = generator.GenerateFile();
Check out the project Wiki for more information.
The generators can be used in a comfortable and simple Windows GUI called NSwagStudio: