NSWAG:.NET、ASP.NET Core、TypeScript用のSwagger/Openapiツールチェーン
nswag | njsonschema | Apimundo | Namotion.Reflection
Apimundoの発表: NSWAGとNJSONSCHEMAに基づくAPIドキュメントシステム?
NSWAGは、.NET、.NETコア、Web API、ASP.NETコア、TypeScript(jQuery、AngularJS、Angular 2+、Aurelia、nockoutjsなど)およびその他のプラットフォームの.net、.net Core、asp.net Core、asp.netコアのツールチェーンです。 Openapi/Swagger仕様は、JSONとJSONスキーマを使用して、RESTFUL WEB APIを説明します。 NSWAGプロジェクトは、既存のASP.NET Web APIコントローラーからOpenAPI仕様を生成し、これらのOpenAPI仕様からクライアントコードを生成するツールを提供します。
このプロジェクトは、1つのツールチェーンにSwashbuckle(Openapi/Swagger Generation)とAutorest(クライアント生成)の機能を組み合わせています(これら2つのLIBは必要ありません)。このようにして、多くの非互換性を避けることができ、Openapi仕様またはJSONスキーマによって十分に説明されていない機能がよりよくサポートされています(例:継承、列挙、参照処理)。 NSWAGプロジェクトでは、JSONスキーマハンドリングとC#/TypeScriptクラス/インターフェイスの生成に.NETにNJSonschemaを使用しています。

このプロジェクトは、Rico Suterおよびその他の貢献者によって開発および維持されています。
特徴
- c#asp.net(core)コントローラーからSwagger2.0およびOpenapi 3.0仕様を生成します
- asp.net(core)ミドルウェアを介してスペックを提供します。
- これらの仕様からC#またはTypeScriptクライアント/プロキシを生成します
- すべてをCLIを介して自動化できます(Nugetツールまたはビルドターゲットを介して配布;またはNPM)
- JSONファイルまたはNSWAGSTUDIO Windows UIを介して構成されたCLI
ツールチェーンを使用する方法
- Windows GUI、Nswagstudioの使用が簡単です
- OpenapiまたはOpenapi Ui OwinおよびAsp.Net Core Middlewaresを使用することで(Swagger UIも提供します)(推奨)
- コマンドラインを介して(NPMパッケージを介して、Monoまたは.Net Core Console Binaryを介したWindows、Mac、およびLinuxのサポート)
- C#コードでは、nugetを介して
- MSBUILDターゲットで
- .csproj(プレビュー)にserviceprojectReferenceタグ付き
- Azure V2関数(外部プロジェクト、最新のNSWAGバージョンを使用しない場合があります)
チュートリアル
- ASP.NETコアアプリにNSWAGを追加します
- NSWAGツールチェーンをASP.NET Web APIプロジェクトに統合する
- 既存のASP.NET Web API WebアセンブリからAngular TypeScriptクライアントを生成する
- ビデオチュートリアル:NSWAGをASP.NETコアWeb APIプロジェクトに統合する方法(5分)
Openapi/Swaggerジェネレーター
- ASP.NET Web APIアセンブリからOpenapi(.NET Coreをサポート)
- aspnetcoreopenapidocumentgenerator
- webapiopenapidocumentgenerator
- Web APIコントローラーのOpenAPI仕様を生成します
- webapitoopenapicommand
- 外部Web APIアセンブリでコントローラーのOpenAPI仕様を生成する
- また、.NETコアアセンブリの負荷もサポートしています
- Tyemestoopenapicommand
- .NETアセンブリからの型のみを含むOpenAPI仕様を生成します
コードジェネレーター
- CSHARPクライアント
- csharpclientgenerator
- OpenAPI仕様からC#クライアントを生成します
- pocosまたはinotifypropertychanged DTOを実装するクラスを生成します
- 生成されたクライアントは、全般的に完全な.NET、.NETコア、Xamarin、.NET標準1.4で使用できます。
- CSHARPコントローラー(契約ファースト/スキーマファースト開発)
- csharpcontrollergenerator
- OpenAPI仕様(ASP.NET Web APIおよびASP.NETコア)に基づいてWeb APIコントローラーを生成します
- タイプスクリプトクライアント
- TypeScriptClientGenerator
- Openapi仕様からTypeScriptクライアントを生成します
- 利用可能なテンプレート/サポートされているライブラリ:
- jquery with callbacks、
JQueryCallbacks - 約束のjquery
JQueryPromises - $ http、
AngularJSを使用したAngularjs - HTTPサービス、
Angularを使用したAngular(V2+) - Window.Fetch APIとES6の約束、
Fetch (React/Reduxアプリでこのテンプレートを使用) - Aurelia-fetch-client、
Aurelia (Fetch Templateに基づく)のhttpclientを使用するAurelia -
Axios (プレビュー)
ダウンロード
- 最新のnswagstudio msiインストーラー(nswagstudio.msi) (Windowsデスクトップアプリケーション)をダウンロードする
- 最新のNSWAGコマンドラインツールとNSWAGSTUDIO(NSWAG.ZIP)をダウンロードする
NPMパッケージ
- NSWAG:npmパッケージとして配布されたコマンドラインツール(.netおよび.net core)
Nugetパッケージ
仕様
- nswag.core
- Openapi / Swagger Reader and Writer Classes、OpenApidocument(.NET Standard 1.0 / 2.0および.NET 4.5)を参照してください。
- nswag.core.yaml (.net標準1.3 / 2.0および.net 4.5)
- YAML OpenAPI仕様を読み書きするための拡張機能
- nswag.Annotations (.net標準1.0 / 2.0および.net 4.5)
- Web APIコントローラーを飾るための属性Openapi生成を制御する
Openapi Generation
- nswag.generation (.net標準1.0 / 2.0および.net 4.5)
- nswag.generation.webapi (.net標準1.0 / 2.0および.net 4.5)
- Web APIコントローラーからOpenAPI仕様を生成するクラス、WebApiopenapidocumentGeneratorを参照してください
- nswag.generation.aspnetcore (.net標準1.6 / 2.0および.net 4.5.1)
- (実験)apiexplorerを使用してASP.NETコアMVCコントローラーからOpenAPI仕様を生成するクラス
コード生成
- nswag.codegeneration (.net標準1.3 / 2.0 / .net 4.5.1)
- Openapi仕様からクライアントを生成するための基本クラス
- nswag.codegeneration.csharp (.net標準1.3および.net 4.5.1)
- OpenAPI仕様からC#クライアントを生成するクラス、CSharpClientGeneratorおよびCSharpControllergeneratorを参照してください
- 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+)
- Openapi仕様を提供するためのASP.NETコア/オウィンミドルワアとスワッガーUI
- nswag.aspnet.webapi (.net 4.5+)
- 例外をシリアル化するASP.NET Web APIフィルター(jsonexceptionfilterattribute)
フロントエンド
- nswag.AssemblyLoader (.NET標準1.6 / 2.0および.NET 4.5.1):
- 分離されたアプリドメインでアセンブリをロードし、Web APIコントローラーからOpenAPI仕様を生成するクラス
- nswag.commands (.net標準1.6 / 2.0および.net 4.5.1+):
- nswag.msbuild (msbuild .targets):
- Visual Studioプロジェクトに.targetsファイルを追加して、msbuildターゲットでNSWAGコマンドラインツールを実行できるようにします。MSBuildを参照してください。
- nswag.consolecore (.netコア1.0、1.1、2.0、2.1、および2.2):
- .NETコアのコマンドラインツール(
dotnet nswag ) -
<DotNetCliToolReference Include="NSwag.ConsoleCore" Version="..." />
- nswagstudio (チョコレート、窓):
- チョコレートを介してnswagstudioおよびコマンドラインツールをインストールするパッケージ
ci nugetフィード
https://www.myget.org/f/nswag/api/v3/index.json
NUGETパッケージには、.NET Core/UWPターゲットのMicrosoft.netcore.portable.comPatibilityパッケージが必要になる場合があります(MSCORLIBが欠落している場合)。

C#での使用
MiddleWaresを登録してOpenapi Specを生成し、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で使用できます。
スポンサー、サポート、コンサルティング
実装、修正、サポート、またはスポンサーの実装、修正に多額の金額を支払った企業または個人を以下にリストします。このプロジェクトをサポートしていただきありがとうございます!また、財政的な貢献者になることもできます。
- GitHub経由で主な寄稿者のRico Suterをスポンサーします
- NSWAGのOpen Collectiveを介したスポンサープロジェクト
有給のコンサルティングとサポートについては、Rico Suterにお問い合わせください。
貢献者
このプロジェクトは、貢献するすべての人々のおかげで存在します。 [貢献する]。
スポンサー
スポンサーになることにより、このプロジェクトをサポートします。あなたのロゴは、あなたのウェブサイトへのリンクでここに表示されます。
トップスポンサー:
スポンサー:
支援者
すべての支援者に感謝します!