NSWAG: la cadena de herramientas Swagger/Openapi para .NET, ASP.NET Core y TypeScript
NSWAG | Njsonschema | Apimundo | Namotion.REFLECCIÓN
Anunciando Apimundo: ¿Un sistema de documentación API basado en NSWAG y NJSonschema?
NSWAG es una cadena de herramientas Swagger/Openapi 2.0 y 3.0 para .NET, .NET Core, Web API, ASP.NET Core, TypeScript (JQuery, AngularJS, Angular 2+, Aurelia, Knockoutjs y más) y otras plataformas, escritas en C#. La especificación de OpenApi/Swagger utiliza el esquema JSON y JSON para describir una API web RESTful. El proyecto NSWAG proporciona herramientas para generar especificaciones de OpenAPI a partir de controladores de API web Web ASP.NET existentes y código de cliente a partir de estas especificaciones de OpenAPI.
El proyecto combina la funcionalidad de Swashbuckle (OpenApi/Swagger Generation) y Autorest (generación de clientes) en una cadena de herramientas (estas dos libs no son necesarias). De esta manera, se pueden evitar muchas incompatibilitas y las características que no están bien descritas por la especificación de OpenAPI o el esquema JSON son mejor compatibles (por ejemplo, herencia, enum y manejo de referencia). El proyecto NSWAG usa en gran medida NJSonschema para .NET para el manejo del esquema JSON y la generación de la clase/interfaz C#/TypeScript.

El proyecto es desarrollado y mantenido por Rico Suter y otros contribuyentes.
Características
- Genere especificaciones Swagger 2.0 y OpenAPI 3.0 de los controladores C# ASP.NET (Core)
- Servir las especificaciones a través de ASP.NET (Core) Middleware, opcionalmente con UI swagger o redoc
- Genere C# o clientes/proxies de TypeScript a partir de estas especificaciones
- Todo se puede automatizar a través de CLI (distribuido a través de la herramienta NUGET o el objetivo de compilación; o NPM)
- CLI configurada a través de JSON File o NSWagStudio Windows UI
Formas de usar la cadena de herramientas
- Simplemente usar Windows GUI, NSWAGSTUDIO
- Mediante el uso de OpenApi o Openapi UI Owin y ASP.NET Core MiddleWares (también sirve a la interfaz de usuario de Swagger) (recomendado)
- A través de la línea de comandos (Windows, Mac y Linux soportan a través de Mono o .NET Core Console Binary, también a través del paquete NPM)
- En su código C#, a través de Nuget
- En sus objetivos de msbuild
- Con ServiceProjectreference Etiquetas en su .csproj (vista previa)
- En sus funciones Azure V2 (proyecto externo, es posible que no use la última versión de NSWAG)
Tutoriales
- Agregue NSWAG a su aplicación ASP.NET Core
- Integre la cadena de herramientas NSWAG en su proyecto ASP.NET Web API
- Genere un cliente de TypeScript angular a partir de un ensamblaje web de API web ASP.NET existente
- Tutorial de video: cómo integrar NSWAG en su proyecto ASP.NET Core Web API (5 minutos)
Generadores de Openapi/Swagger
- Assp.net Web API Assembly a OpenApi (admite .NET Core)
- AspnetcoreopenapidocumentGenerator
- WebapiopenapidocumentGenerator
- Genera una especificación de OpenAPI para controladores de API web
- Webapitoopenapicommand
- Genera una especificación de OpenAPI para controladores en un ensamblaje de API web externo
- También admite la carga de ensamblados de .NET Core
- Typestoopenapicommand
- Genera una especificación de OpenAPI que contiene solo tipos de ensamblados .NET
Generadores de código
- Cliente csharp
- CsharpClientGenerator
- Genera clientes C# a partir de una especificación de OpenAPI
- Genera POCOS o clases que implementan inotifypropertyChanged Supporting DTOS
- Los clientes generados se pueden usar con el estándar .NET Core, Xamarin y .Net 1.4 .NET 1.4 en general
- Controladores CSHARP (Contrato First/Schema First Development)
- Csharpcontrollergenerator
- Genera controladores API web basados en una especificación OpenAPI (API web ASP.NET y ASP.NET Core)
- Cliente mecanografiado
- TypeScriptClientGenerator
- Genera clientes de TypeScript a partir de una especificación de OpenAPI
- Plantillas disponibles/bibliotecas compatibles:
- JQuery con devoluciones de llamada,
JQueryCallbacks - JQuery con promesas
JQueryPromises - Angularjs usando $ http,
AngularJS - Angular (V2+) usando el servicio HTTP,
Angular - Window.fetch API y ES6 promesas,
Fetch (use esta plantilla en su aplicación React/Redux) - Aurelia usando el httpclient de Aurelia-Fetch-Client,
Aurelia (basado en la plantilla de búsqueda) -
Axios (vista previa)
Descargas
- Descargue el último instalador NSWAGSTUDIO MSI (NSWAGSTUDIO.MSI) (Aplicación de escritorio de Windows)
- Descargue las últimas herramientas de línea de comandos de NSWAG y NSWAGSTUDIO (nswag.zip)
Paquetes de NPM
- NSWAG: Herramientas de línea de comandos (.NET y .NET Core) distribuidas como paquete NPM
Paquetes nuget
Especificación
- Nswag.core
- Las clases de lector y escritor de OpenApi / Swagger, ver OpenApiCument (.NET Standard 1.0 / 2.0 y .NET 4.5)
- Nswag.core.yaml (.NET Standard 1.3 / 2.0 y .NET 4.5)
- Extensiones para leer y escribir especificaciones de Yaml Openapi
- Nswag.annotations (.NET Standard 1.0 / 2.0 y .NET 4.5)
- Atributos para decorar controladores de API web para controlar la generación de OpenApi
Generación de Openapi
- Nswag.generation (.NET Standard 1.0 / 2.0 y .NET 4.5)
- Clases para generar especificaciones de OpenApi
- Nswag.generation.webapi (.NET Standard 1.0 / 2.0 y .NET 4.5)
- Clases Para generar especificaciones de OpenAPI a partir de controladores de API web, consulte WebApioPenapidocumentGenerator
- Nswag.generation.aspnetcore (.NET Standard 1.6 / 2.0 y .NET 4.5.1)
- (Experimental) clases para generar especificaciones de OpenAPI a partir de controladores MVC Core ASP.NET utilizando el ApiExplorer
Generación de código
- Nswag.codeGeneration (.NET Standard 1.3 / 2.0 / .NET 4.5.1)
- Clases base para generar clientes a partir de especificaciones de OpenAPI
- Nswag.codeGeneration.csharp (.NET Standard 1.3 y .NET 4.5.1)
- Clases para generar clientes C# a partir de especificaciones de OpenAPI, consulte CsharpClientGenerator y CsharpControllergenerator
- Nswag.codeGeneration.typescript (.NET Standard 1.3 y .NET 4.5.1)
- Clases para generar clientes de TypeScript a partir de especificaciones de OpenApi, consulte TypeScriptClientGenerator
ASP.NET y ASP.NET Core
- Nswag.aspnetcore (.NET Standard 1.6 / 2.0 y .NET 4.5.1+)
- Nswag.aspnet.owin (.net 4.5+)
- ASP.NET Core/Owin MiddleWares para servir las especificaciones de OpenApi y la interfaz de usuario de Swagger
- Nswag.aspnet.webapi (.net 4.5+)
- Filtro API web de ASP.NET que serializa las excepciones (JSonexceptionFilterAttribute)
Frontendos
- Nswag.assemblyloader (.net estándar 1.6 / 2.0 y .net 4.5.1):
- Clases para cargar ensamblajes en un appdomain aislado y generar especificaciones de OpenAPI a partir de controladores de API web
- NSWAG.COMMANDS (.NET Standard 1.6 / 2.0 y .NET 4.5.1+):
- Comandos para las implementaciones de la herramienta de línea de comandos y la interfaz de usuario
- Nswag.msbuild (msbuild .targets):
- Agrega un archivo .Targets a su proyecto Visual Studio, para que pueda ejecutar la herramienta de línea de comandos NSWAG en un objetivo MSBuild, consulte MSBuild
- Nswag.consolecore (.net core 1.0, 1.1, 2.0, 2.1 y 2.2):
- Herramienta de línea de comando para .NET Core (
dotnet nswag ) -
<DotNetCliToolReference Include="NSwag.ConsoleCore" Version="..." />
- Nswagstudio (chocolate, ventanas):
- Paquete para instalar las herramientas NSWAGSTUDIO y la línea de comandos a través de Chocolatey
CI Nuget Feed
https://www.myget.org/f/nswag/api/v3/index.json
Los paquetes NUGET pueden requerir el paquete Microsoft.netcore.portable.compatibility en los objetivos .NET Core/UWP (si falta MSCORLIB).

Uso en C#
Para registrar el MiddleWares para generar una especificación de OpenApi y renderizar la interfaz de usuario, registre NSWAG en Startup.cs :
public class Startup
{
.. .
public void ConfigureServices ( IServiceCollection services )
{
services . AddOpenApiDocument ( ) ; // add OpenAPI v3 document
// services.AddSwaggerDocument(); // add Swagger v2 document
}
public void Configure ( IApplicationBuilder app , IHostingEnvironment env , ILoggerFactory loggerFactory )
{
.. .
app . UseOpenApi ( ) ; // serve OpenAPI/Swagger documents
app . UseSwaggerUi ( ) ; // serve Swagger UI
app . UseReDoc ( ) ; // serve ReDoc UI
}
} El siguiente código muestra cómo leer una especificación de OpenApi/Swagger y generar clases de clientes de C# para llamar a los servicios web descritos:
var document = await OpenApiDocument . FromFileAsync ( "openapi.json" ) ;
var clientSettings = new CSharpClientGeneratorSettings
{
ClassName = "MyClass" ,
CSharpGeneratorSettings =
{
Namespace = "MyNamespace"
}
} ;
var clientGenerator = new CSharpClientGenerator ( document , clientSettings ) ;
var code = clientGenerator . GenerateFile ( ) ; Consulte el wiki del proyecto para obtener más información.
Nswagstudio
Los generadores se pueden usar en una cómoda y simple GUI de Windows llamada NSWAGSTUDIO:
Patrocinadores, apoyo y consultoría
Las empresas o personas que pagaron una cantidad sustancial por implementar, solucionar problemas, apoyo o patrocinio se enumeran a continuación. ¡Gracias por apoyar este proyecto! También puede convertirse en un contribuyente financiero:
- Patrocinador principal colaborador Rico Suter a través de Github
- Proyecto de patrocinador a través de Open Collective para NSWAG
Póngase en contacto con Rico Suter para consultoría y apoyo pagos.
Colaboradores
Este proyecto existe gracias a todas las personas que contribuyen. [Contribuir].
Patrocinadores
Apoye este proyecto al convertirse en patrocinador. Su logotipo aparecerá aquí con un enlace a su sitio web.
Patrocinadores principales:
Patrocinadores:
Patrocinadores
¡Gracias a todos nuestros patrocinadores!