NSWAG:.NET,ASP.NET核心和打字稿的Swagger/OpenAPI工具鏈
NSWAG | NJSonschema | Apimundo | namotion.反射
宣布Apimundo:基於NSWAG和NJSONSCHEMA的API文檔系統?
NSWAG是用於.net,.net Core,Web API,ASP.NET Core,tyspript(jQuery,angularjs,Angularjs,AngularJs,Angular 2+,Aurelia,aurelia,quotionjs等)和其他平台的Swagger/OpenAPI 2.0和3.0工具鏈。 OpenAPI/Swagger規範使用JSON和JSON模式來描述RESTFUL WEB API。 NSWAG項目提供了從現有ASP.NET Web API控制器和客戶端代碼中生成OpenAPI規格的工具。
該項目結合了一個工具鏈中的swashbuckle(OpenApi/Swagger Generation)和Autorest(客戶生成)的功能(不需要這兩個LIB)。這樣,就可以避免許多無鎮的人,並且可以更好地支持OpenAPI規範或JSON模式(例如繼承,枚舉和參考處理)的功能。 NSWAG項目大量使用NJSonschema用於.NET進行JSON模式處理和C#/Typescript類/接口生成。

該項目由Rico Suter和其他貢獻者開發和維護。
特徵
- 從C#ASP.NET(CORE)控制器生成Swagger 2.0和OpenAPI 3.0規格
- 通過ASP.NET(CORE)中間件服務規格,可選地使用Swagger UI或REDOC
- 從這些規格生成C#或打字稿客戶端/代理
- 一切都可以通過CLI自動化(通過Nuget工具或構建目標分佈;或NPM)
- 通過JSON文件或NSWAGSTUDIO Windows UI配置的CLI
使用工具鏈的方法
- 易於使用Windows GUI,NSWAGSTUDIO
- 通過使用OpenAPI或OpenAPI UI OWIN和ASP.NET Core Middlewares(也提供Swagger UI)(建議)
- 通過命令行(Windows,Mac和Linux通過Mono或.NET Core Console二進制支持,也可以通過NPM軟件包)
- 在您的C#代碼中,通過Nuget
- 在您的MSBUILD目標中
- 帶有.csproj(預覽)中的ServiceProjectReference標籤
- 在您的Azure V2函數中(外部項目,可能不使用最新的NSWAG版本)
教程
- 將NSWAG添加到您的ASP.NET核心應用
- 將NSWAG工具鏈集成到您的ASP.NET Web API項目中
- 從現有的ASP.NET Web API Web組裝中生成Angular打字端客戶端
- 視頻教程:如何將NSWAG集成到您的ASP.NET核心Web API項目(5分鐘)
OpenAPI/Swagger Generator
- ASP.NET Web API彙編到OpenAPI(支持.NET Core)
- AspnetCoreopenapidocumentgenerator
- WebApiopenapidocumentgenerator
- WebapitoopEnapicommand
- 在外部Web API組件中為控制器生成OpenAPI規範
- 還支持.NET核心組件的加載
- pastestoopenapicommand
- 生成一個僅包含.NET組件類型的OpenAPI規範
代碼生成器
- CSHARP客戶端
- csharpclientgenerator
- 從OpenAPI規範生成C#客戶端
- 生成實施InotifyPropertychanged DTOS的POCO或類
- 生成的客戶可以與Full .NET,.NET Core,Xamarin和.Net標準1.4一起使用
- CSHARP控制器(合同第一/模式第一開發)
- csharpcontrollergenerator
- 基於OpenAPI規範生成Web API控制器(ASP.NET Web API和ASP.NET Core)
- 打字稿客戶端
- TypescriptClientGenerator
- 從OpenAPI規範生成TypeScript客戶端
- 可用的模板/支持的庫:
- 帶回調的jQuery,
JQueryCallbacks - 與承諾的jQuery
JQueryPromises - 使用$ http,
AngularJS angularjs - 使用HTTP服務的角(V2+)
Angular - window.fetch API和ES6承諾,
Fetch (在您的React/Redux應用中使用此模板) - 使用Aurelia-fetch-Client,
Aurelia (基於提取模板)的httpclient的Aurelia -
Axios (預覽)
下載
- 下載最新的NSWAGSTUDIO MSI安裝程序(NSWAGSTUDIO.MSI) (Windows Desktop應用程序)
- 下載最新的NSWAG命令行工具和NSWAGSTUDIO(NSWAG.ZIP)
NPM軟件包
- NSWAG:命令行工具(.NET和.NET CORE)分佈為NPM軟件包
Nuget軟件包
規格
- NSWAG.CORE
- OpenAPI / Swagger Reader和Writer課程,請參閱OpenApidocument(.NET標準1.0 / 2.0和.NET 4.5)
- NSWAG.CORE.YAML (.NET標準1.3 / 2.0和.NET 4.5)
- NSWAG.Annotations (.NET標準1.0 / 2.0和.NET 4.5)
- 裝飾Web API控制器以控制OpenAPI生成的屬性
OpenAPI一代
- nswag.generation (.NET標準1.0 / 2.0和.NET 4.5)
- nswag.generation.webapi (.NET標準1.0 / 2.0和.NET 4.5)
- nswag.generation.aspnetcore (.NET標準1.6 / 2.0和.NET 4.5.1)
- (實驗)使用APIEXPLORER從ASP.NET Core MVC控制器生成OpenAPI規格的類
代碼生成
- nswag.codegeneration (.NET標準1.3 / 2.0 / .NET 4.5.1)
- nswag.codegeneration.csharp (.NET標準1.3和.NET 4.5.1)
- nswag.codegeneration.typescript (.NET標準1.3和.NET 4.5.1)
- 從OpenAPI規範生成Typescript客戶端的類,請參閱TypescriptClientGenerator
ASP.NET和ASP.NET核心
- NSWAG.ASPNETCORE (.NET標準1.6 / 2.0和.NET 4.5.1+)
- nswag.aspnet.owin (.net 4.5+)
- ASP.NET Core/Owin Midderwares,用於服務OpenAPI規格和Swagger UI
- nswag.aspnet.webapi (.net 4.5+)
- ASP.NET Web API濾波器序列化異常(jsonexceptionFilterAttribute)
前端
- nswag.semblyloader (.NET標準1.6 / 2.0和.NET 4.5.1):
- 將組件加載到孤立的AppDomain中並從Web API控制器生成OpenAPI規格的類
- nswag.commands (.NET標準1.6 / 2.0和.NET 4.5.1+):
- NSWAG.MSBUILD (MSBUILD .targets):
- 將.targets文件添加到您的Visual Studio項目,以便您可以在MSBuild目標中運行NSWAG命令行工具,請參閱MSBUILD
- nswag.consolecore (.net Core 1.0、1.1、2.0、2.1和2.2):
- .NET CORE的命令行工具(
dotnet nswag ) -
<DotNetCliToolReference Include="NSwag.ConsoleCore" Version="..." />
- NSWAGSTUDIO (巧克力,窗戶):
- 包裝通過巧克力安裝NSWAGSTUDIO和命令行工具
CI Nuget feed
https://www.myget.org/f/nswag/api/v3/index.json
Nuget軟件包可能需要microsoft.netcore.portable.com.net core/uwp targets(如果缺少MSCORLIB)。

在C#中使用
要註冊MiddleWares以生成OpenAPI規格並渲染UI,請在Startup.cs中註冊NSWAG:
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
}
}以下代碼顯示瞭如何讀取OpenAPI/Swagger規範並生成C#客戶端類以調用所描述的Web服務:
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 ( ) ;查看Wiki項目以獲取更多信息。
NSWAGSTUDIO
發電機可用於稱為NSWAGSTUDIO的舒適且簡單的Windows GUI:
贊助商,支持和諮詢
下面列出了用於實施,解決問題,支持或贊助的公司或個人。感謝您支持這個項目!您也可以成為財務貢獻者:
- 贊助商主要貢獻者Rico Suter通過GitHub
- 贊助商項目通過開放集體的NSWAG項目
請聯繫Rico Suter以獲取付費諮詢和支持。
貢獻者
由於所有貢獻的人,該項目的存在。 [貢獻]。
贊助商
通過成為贊助商來支持這個項目。您的徽標將在此處顯示您網站的鏈接。
頂級贊助商:
贊助商:
支持者
感謝我們所有的支持者!