NSWAG: La chaîne d'outils Swagger / OpenAPI pour .NET, ASP.NET Core et TypeScript
NSWAG | NJSonschema | Apimundo | NAMOTION.REFLECTION
Annonce d'Apimundo: un système de documentation API basé sur NSWAG et NJSonschema?
NSWAG est une chaîne d'outils Swagger / OpenAPI 2.0 et 3.0 pour .NET, .NET Core, Web API, ASP.NET Core, TypeScript (jQuery, AngularJS, Angular 2+, Aurelia, knockoutjs et plus) et d'autres plateformes, écrite en C #. La spécification OpenAPI / Swagger utilise le schéma JSON et JSON pour décrire une API Web RESTful. Le projet NSWAG fournit des outils pour générer des spécifications OpenAPI à partir des contrôleurs API Web ASP.NET existants et du code client à partir de ces spécifications OpenAPI.
Le projet combine la fonctionnalité de Swashbuckle (OpenAPI / Génération de Swagger) et Autorest (génération de clients) dans une chaîne d'outils (ces deux LIB ne sont pas nécessaires). De cette façon, beaucoup d'incompatibilites peuvent être évitées et des fonctionnalités qui ne sont pas bien décrites par la spécification OpenAPI ou le schéma JSON sont mieux prises en charge (par exemple, l'héritage, l'énumération et la manipulation de référence). Le projet NSWAG utilise fortement NJSonschema pour .NET pour la gestion du schéma JSON et la génération de classe / interface C # / TypeScript.

Le projet est développé et maintenu par Rico Suter et d'autres contributeurs.
Caractéristiques
- Générer des spécifications Swagger 2.0 et OpenAPI 3.0 à partir de contrôleurs C # ASP.NET (Core)
- Servir les spécifications via le middleware ASP.NET (Core), éventuellement avec une interface utilisateur Swagger ou Redoc
- Générez C # ou TypeScript Clients / Proxies à partir de ces spécifications
- Tout peut être automatisé via CLI (distribué via l'outil NuGet ou la cible de construction; ou NPM)
- CLI configuré via un fichier JSON ou NSWAGStudio Windows UI
Façons d'utiliser la chaîne d'outils
- Simple à utiliser Windows GUI, NSWAGStudio
- En utilisant l'OpenAPI ou OpenAPI UI OWIN et ASP.NET Core Middlewares (sert également l'interface utilisateur de Swagger) (recommandé)
- Via la ligne de commande (prise en charge Windows, Mac et Linux via le binaire de la console de base mono ou .NET, également via le package NPM)
- Dans votre code C #, via Nuget
- Dans vos cibles msbuild
- Avec des balises ServiceProjectreference dans votre .csproj (aperçu)
- Dans vos fonctions Azure V2 (Projet externe, pourrait ne pas utiliser la dernière version NSWAG)
Tutoriels
- Ajouter NSWAG à votre application ASP.NET Core
- Intégrez la chaîne d'outils NSWAG dans votre projet ASP.NET Web API
- Générer un client de type angulaire à partir d'une assemblée Web ASP.NET ASP.NET existante
- Tutoriel vidéo: comment intégrer NSWAG dans votre projet ASP.NET Core Web API (5 minutes)
Générateurs OpenAPI / Swagger
- ASP.NET Web API Assembly vers OpenAPI (prend en charge .NET Core)
- AspnetcoreopenapidocumentGenerator
- WebapiopenapiDocumentGenerator
- Génère une spécification OpenAPI pour les contrôleurs d'API Web
- Webapitoopenapicommand
- Génère une spécification OpenAPI pour les contrôleurs dans un assemblage API Web externe
- Prend également en charge le chargement des assemblages de noyau .NET
- Typoopenapicommand
- Génère une spécification OpenAPI contenant uniquement des types à partir d'assemblages .NET
Générateurs de code
- Client CSHARP
- CSharpClientGenerator
- Génère des clients C # à partir d'une spécification OpenAPI
- Génère des POCO ou des classes implémentant InotifyPropertyChanged Poublie en charge DTOS
- Les clients générés peuvent être utilisés avec .NET, .NET Core, Xamarin et .NET Standard 1.4 en général
- Contrôleurs CSHARP (Contrat First / Schema First Development)
- CSHARPContrllegenerator
- Génère des contrôleurs d'API Web basés sur une spécification OpenAPI (ASP.NET Web API et ASP.NET Core)
- Client dactylographié
- TypeScriptClientGenerator
- Génère des clients dactylographiés à partir d'une spécification OpenAPI
- Modèles disponibles / bibliothèques prises en charge:
- JQuery avec des rappels,
JQueryCallbacks - JQuery avec promesses
JQueryPromises - Angularjs en utilisant $ http,
AngularJS - Angulaire (v2 +) en utilisant le service HTTP,
Angular - Window.Fetch API et ES6 Promises,
Fetch (utilisez ce modèle dans votre application React / Redux) - Aurelia utilisant le httpclient de Aurelia-Fetch-Client,
Aurelia (basé sur le modèle de récupération) -
Axios (aperçu)
Téléchargements
- Télécharger le dernier programme d'installation de NSWAGStudio MSI (NSWAGStudio.msi) (application Windows Desktop)
- Télécharger les derniers outils de ligne de commande NSWAG et NSWAGStudio (nswag.zip)
Packages NPM
- NSWAG: outils de ligne de commande (.NET et .NET Core) distribués sous forme de package NPM
Packages NuGet
Spécification
- Nswag.core
- Les classes de lecture et d'écrivain OpenAPI / Swagger
- Nswag.core.yaml (.NET Standard 1.3 / 2.0 et .net 4.5)
- Extensions pour lire et écrire des spécifications YAML OpenAPI
- NSWAG.annotations (.NET Standard 1.0 / 2.0 et .NET 4.5)
- Attributs pour décorer les contrôleurs d'API Web pour contrôler la génération OpenAPI
Génération OpenAPI
- NSWAG.Genation (.NET Standard 1.0 / 2.0 et .NET 4.5)
- Cours pour générer des spécifications OpenAPI
- Nswag.generation.webapi (.NET Standard 1.0 / 2.0 et .NET 4.5)
- Classes pour générer des spécifications OpenAPI à partir de contrôleurs d'API Web, voir WebapiOpenapiDocumentGenerator
- Nswag.generation.aspnetcore (.NET Standard 1.6 / 2.0 et .net 4.5.1)
- Classes (expérimentales) pour générer des spécifications OpenAPI à partir de contrôleurs ASP.NET Core MVC à l'aide de l'APIExplorer
Génération de code
- Nswag.codegeneration (.NET Standard 1.3 / 2.0 / .NET 4.5.1)
- Cours de base pour générer des clients à partir de spécifications OpenAPI
- Nswag.codegeneration.csharp (.NET Standard 1.3 et .NET 4.5.1)
- Cours pour générer des clients C # à partir des spécifications OpenAPI, voir CSharpClientGenerator et CSharpContrllegenerator
- Nswag.codeGeneration.TypeScript (.NET Standard 1.3 et .NET 4.5.1)
- Classes pour générer des clients TypeScript à partir des spécifications OpenAPI, voir TypeScriptClientGenerator
ASP.NET et ASP.NET CORE
- Nswag.aspnetcore (.NET Standard 1.6 / 2.0 et .net 4.5.1+)
- Nswag.aspnet.owin (.net 4.5+)
- ASP.NET Core / Owin Middlewares pour servir les spécifications OpenAPI et Swagger UI
- Nswag.aspnet.webapi (.net 4.5+)
- Filtre ASP.NET Web API qui sérialise les exceptions (jSonexceptionFilterAtTribute)
Fronts
- NSWAG.AssemblyLoader (.NET Standard 1.6 / 2.0 et .NET 4.5.1):
- Classes pour charger des assemblages dans un appdomain isolé et générer des spécifications OpenAPI à partir de contrôleurs d'API Web
- NSWAG.COMMANDS (.NET Standard 1.6 / 2.0 et .NET 4.5.1+):
- Commandes pour les implémentations de l'outil de ligne de commande et l'interface utilisateur
- Nswag.msbuild (msbuild .targets):
- Ajoute un fichier .targets à votre projet Visual Studio, afin que vous puissiez exécuter l'outil de ligne de commande NSWAG dans une cible MSBuild, voir msbuild
- Nswag.consolecore (.NET Core 1.0, 1.1, 2.0, 2.1 et 2.2):
- Outil de ligne de commande pour .NET Core (
dotnet nswag ) -
<DotNetCliToolReference Include="NSwag.ConsoleCore" Version="..." />
- NSWAGSTUDIO (Chocolatey, Windows):
- Package pour installer les outils NSWAGStudio et de ligne de commande via Chocolatey
Ci Nuget Feed
https://www.myget.org/f/nswag/api/v3/index.json
Les packages NuGet peuvent nécessiter le package Microsoft.netcore.Portable.compatibilité sur les cibles .NET Core / UWP (si MSCorLib est manquant).

Utilisation en C #
Pour enregistrer les Middlewares pour générer une spécification OpenAPI et rendre l'interface utilisateur, enregistrez NSWAG dans 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
}
} Le code suivant montre comment lire une spécification OpenAPI / Swagger et générer des classes client C # pour appeler les services Web décrits:
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 ( ) ; Consultez le Wiki du projet pour plus d'informations.
Nswagstudio
Les générateurs peuvent être utilisés dans une interface graphique Windows confortable et simple appelée NSWAGStudio:
Sponsors, soutien et conseil
Les entreprises ou les particuliers qui ont payé un montant substantiel pour la mise en œuvre, la résolution des problèmes, le soutien ou le parrain sont répertoriés ci-dessous. Merci de soutenir ce projet! Vous pouvez également devenir un contributeur financier:
- Sponsor contributeur principal Rico Suter via Github
- Projet de sponsors via Open Collective pour NSWAG
Veuillez contacter Rico Suter pour le conseil et le soutien payants.
Contributeurs
Ce projet existe grâce à toutes les personnes qui contribuent. [Contribuer].
Sponsors
Soutenez ce projet en devenant un sponsor. Votre logo apparaîtra ici avec un lien vers votre site Web.
Top sponsors:
Sponsors:
Bailleurs de fonds
Merci à tous nos bailleurs de fonds!