NSWAG: The Swagger/OpenApi Toolchain para .NET, ASP.NET Core e TypeScript
Nswag | Njsonschema | Apimundo | NAMOTION.Reflexão
Anunciando Apimundo: um sistema de documentação da API baseado em NSWAG e NJSONSCHEMA?
O NSWAG é uma cadeia de ferramentas Swagger/OpenAPI 2.0 e 3.0 para .NET, .NET Core, Web API, ASP.NET Core, TypeScript (JQuery, AngularJS, Angular 2+, Aurelia, KnockoutJs e muito mais) e outras plataformas, escritas em C#. A especificação OpenAPI/Swagger usa o JSON e o JSON Schema para descrever uma API da Web RESTful. O projeto NSWAG fornece ferramentas para gerar especificações do OpenAPI a partir de controladores de API da Web ASP.NET e código de cliente dessas especificações do OpenAPI.
O projeto combina a funcionalidade do Swashbuckle (geração OpenAPI/Swagger) e Autorest (geração do cliente) em uma cadeia de ferramentas (esses dois LIBs não são necessários). Dessa forma, muitos incompatibilitas podem ser evitados e os recursos que não são bem descritos pela especificação OpenAPI ou JSON são melhor suportados (por exemplo, herança, enum e manuseio de referência). O projeto NSWAG usa fortemente o NJSOnschema para .NET para manuseio de esquema JSON e geração de classe/classe C#/typencript.

O projeto é desenvolvido e mantido por Rico Suter e outros colaboradores.
Características
- Gere Swagger 2.0 e OpenAPI 3.0 Especificações de C# ASP.NET (CORE) Controladores
- Sirva as especificações via middleware ASP.NET (CORE), opcionalmente com interface do usuário ou Redoc
- Gere C# ou clientes/proxies digitadores a partir dessas especificações
- Tudo pode ser automatizado via CLI (distribuída via ferramenta Nuget ou alvo de construção; ou npm)
- CLI configurada via arquivo JSON ou NSWAGSTUDIO Windows UI
Maneiras de usar a cadeia de ferramentas
- Simples de usar GUI do Windows, Nswagstudio
- Usando o OpenApi ou o Openapi UI Owin e o ASP.NET Core Middlewares (também serve a interface do usuário do Swagger) (recomendado)
- Via Linha de Comando (Suporte ao Windows, Mac e Linux através do Mono ou .Net Core Console Binary, também via pacote NPM)
- No seu código C#, via Nuget
- Em seus alvos msbuild
- Com tags de serviço de serviço no seu .csproj (visualização)
- Nas suas funções do Azure V2 (projeto externo, pode não usar a versão mais recente do NSWAG)
Tutoriais
- Adicione o NSWAG ao seu aplicativo ASP.NET Core
- Integre a cadeia de ferramentas NSWAG no seu projeto API da Web ASP.NET
- Gere um cliente de texto datilografado angular a partir de um Asp.Net Web API Web Assembly
- Tutorial em vídeo: Como integrar o NSWAG no seu projeto API da Web ASP.NET Core (5 minutos)
Geradores OpenApi/Swagger
- Asp.Net Web API Assembly para o OpenAPI (suporta .NET Core)
- AspnetCoreOpenapidocumentGenerator
- WebApioPenApidocumentGenerator
- Gera uma especificação OpenAPI para controladores de API da Web
- WebApitOpeNapicommand
- Gera uma especificação OpenAPI para controladores em uma montagem externa da API da Web
- Também suporta o carregamento de conjuntos de núcleo .NET
- TypeSToPENAPICMOMAND
- Gera uma especificação OpenAPI contendo apenas tipos de montagens .NET
Geradores de código
- Cliente CSharp
- CSharpClientGenerator
- Gera clientes C# de uma especificação OpenAPI
- Gera pocos ou classes que implementam InotifyPropertyChanged DTOs de suporte
- Os clientes gerados podem ser usados com o padrão .NET, .NET Core, Xamarin e .NET Standard 1.4 em geral
- Controladores CSharp (contrato First/Schema First Development)
- CSharpControllerGenerator
- Gera controladores de API da Web com base em uma especificação OpenAPI (API da Web ASP.NET e ASP.NET CORE)
- Cliente da TypeScript
- TypeScriptClientGenerator
- Gera clientes da TypeScript de uma especificação OpenAPI
- Modelos disponíveis/bibliotecas suportadas:
- JQuery com retornos de chamada,
JQueryCallbacks - JQuery com promessas
JQueryPromises - AngularJS usando $ http,
AngularJS - Angular (V2+) usando o serviço HTTP,
Angular - Window.Fetch API e ES6 promessas,
Fetch (use este modelo no seu aplicativo React/Redux) - Aurelia usando o httpclient da Aurelia-Fetch-Client,
Aurelia (com base no modelo de busca) -
Axios (visualização)
Downloads
- Faça o download do mais recente instalador do NSWAGSTUDIO MSI (NSWAGSTUDIO.MSI) (aplicativo Windows Desktop)
- Faça o download das mais recentes ferramentas de linha de comando NSWAG e NSWAGSTUDIO (NSWAG.ZIP)
Pacotes NPM
- NSWAG: Ferramentas de linha de comando (.NET e .NET Core) distribuídos como pacote NPM
Pacotes Nuget
Especificação
- Nswag.core
- As aulas de leitor e escritor OpenApi / Swagger, consulte OpenApidocument (.NET Standard 1.0 / 2.0 e .NET 4.5)
- Nswag.core.yaml (.NET Standard 1.3 / 2.0 e .NET 4.5)
- Extensões para ler e escrever especificações da YAML OpenApi
- Nswag.annotações (.NET STANDOW 1.0 / 2.0 e .NET 4.5)
- Atributos para decorar controladores da API da Web para controlar a geração OpenAPI
Geração OpenApi
- NSWAG.GENERAÇÃO (Padrão .NET 1.0 / 2.0 e .NET 4.5)
- Classes para gerar especificações do OpenAPI
- Nswag.generation.webapi (.NET Standard 1.0 / 2.0 e .Net 4.5)
- Classes para gerar especificações do OpenAPI de controladores da Web API, consulte WebApioPenApidocumentGenerator
- Nswag.generation.aspnetCore (padrão .NET 1.6 / 2.0 e .NET 4.5.1)
- Classes (experimentais) para gerar especificações do OpenAPI do ASP.NET Core MVC Controllers usando o apiexplorer
Geração de código
- Nswag.codegeneração (padrão .NET 1.3 / 2.0 / .NET 4.5.1)
- Classes base para gerar clientes a partir de especificações do OpenAPI
- Nswag.codegeneração.csharp (padrão .NET 1.3 e .NET 4.5.1)
- Aulas para gerar clientes C# a partir de especificações do OpenAPI, consulte CSharpClientGenerator e CSharpControllerGenerator
- Nswag.codegeneration.typeScript (.NET Standard 1.3 e .Net 4.5.1)
- Classes para gerar clientes da TypeScript a partir de especificações do OpenAPI, consulte TypeScriptClientGenerator
Asp.net e asp.net Core
- Nswag.aspnetcore (padrão .NET 1.6 / 2.0 e .NET 4.5.1+)
- Nswag.aspnet.owin (.net 4.5+)
- ASP.NET Core/Owin Middlewares para servir especificações do OpenAPI e UI de Swagger
- Nswag.aspnet.webapi (.net 4.5+)
- Filtro da API da Web ASP.NET que serializa exceções (JsonexceptionFilterAttribute)
Frontends
- NSWAG.ASSEMMBLOLOVER (.NET STANDOW 1.6 / 2.0 e .NET 4.5.1):
- Classes para carregar conjuntos em um aplicativo isolado e gerar especificações do OpenAPI de controladores da Web API
- Nswag.Commands (padrão .NET 1.6 / 2.0 e .NET 4.5.1+):
- Comandos para as implementações da ferramenta de linha de comando e interface do usuário
- Nswag.msbuild (msbuild .Targets):
- Adiciona um arquivo .Targets ao seu projeto Visual Studio, para que você possa executar a ferramenta de linha de comando NSWAG em um alvo MSBuild, consulte o msbuild
- Nswag.consolecore (.NET Core 1.0, 1.1, 2.0, 2.1 e 2.2):
- Ferramenta de linha de comando para .NET Core (
dotnet nswag ) -
<DotNetCliToolReference Include="NSwag.ConsoleCore" Version="..." />
- NSWAGSTUDIO (Chocolatey, Windows):
- Pacote para instalar as ferramentas de linha NSWagStudio e de comando via Chocolatey
Alimentação do CI NUGET
https://www.myget.org/f/nswag/api/v3/index.json
Os pacotes NUGET podem exigir o pacote Microsoft.NetCore.portable.compatibility On .Net Core/UWP metas (se o mscorlib estiver ausente).

Uso em C#
Para registrar os Middlewares para gerar uma especificação OpenAPI e renderizar a interface do usuário, registre o NSWAG no 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
}
} O código a seguir mostra como ler uma especificação OpenAPI/Swagger e gerar classes de clientes C# para ligar para os Serviços da 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 ( ) ; Confira o Wiki do projeto para obter mais informações.
NSWAGSTUDIO
Os geradores podem ser usados em uma GUI do Windows confortável e simples chamada NswagStudio:
Patrocinadores, apoio e consultoria
Empresas ou indivíduos que pagaram um valor substancial pela implementação, corrigindo problemas, suporte ou patrocinador estão listados abaixo. Obrigado por apoiar este projeto! Você também pode se tornar um colaborador financeiro:
- Patrocinador Colaborador Rico Suter via Github
- Projeto de patrocinador via Open Collective para NSWAG
Entre em contato com Rico Suter para obter consultoria paga e suporte.
Colaboradores
Este projeto existe graças a todas as pessoas que contribuem. [Contribuir].
Patrocinadores
Apoie este projeto, tornando -se um patrocinador. Seu logotipo aparecerá aqui com um link para o seu site.
Patrocinadores principais:
Patrocinadores:
Patrocinadores
Obrigado a todos os nossos apoiadores!