1
1

More than 1 year has passed since last update.

OpenAPI Generator(JAR版)でC#のサーバ、クライアントを自動生成する

Last updated at Posted at 2023-02-18

1. はじめに

  • スキーマ定義からOpenAPI Generatorを使用してC#のサーバー、クライアントのソースをジェネレートしたい
  • Jar版を使用したいため、Javaのインストール、設定もしたい

2. Javaのインストール

2.1. ダウンロードサイトを開く

2.2. ダウンロードボタンをクリックする

image.png

2.3 インストーラーをダウンロードして開く

2.4. インストールボタンをクリックする

  • 任意で宛先フォルダの変更をしたい場合はチェックする
    image.png

image.png

2.5. 閉じるボタンをクリックする

image.png

2.6. システム環境変数の編集を開く

image.png

2.7. [詳細設計]タブ ? 環境変数ボタンをクリックする

image.png

2.8. 追加ボタンをクリックする

image.png

2.9. 変数名、値を入力してOKボタンをクリックする

image.png

項目
変数名 JAVA_HOME (固定)
変数値 (インストールしたディレクトリ)

2.10. Pathを選択して編集ボタンをクリックする

image.png

2.11. 追加ボタンをクリックする

image.png

2.12. Javaのパスを追加する

%JAVA_HOME%\bin
image.png

2.13. 上へボタンをクリックして先頭へ移動する

image.png

2.14 パソコンを再起動する

  • 通常は不要のようだが、自分のPCだとパスが反映されず再起動した

2.15 コマンドプロンプトからJavaのインストールを確認する

java -version
image.png

3. OpenAPI Generatorのインストール、設定

3.1. OpenAPI Generator JAR版をダウンロードする

image.png

3.2. バッチファイルを作成する

  • サイトを見ても動くコマンド、パラメータがよくわからず最終的にこの形になった
build.bat
@echo off

rem ローカルフォルダにあわせて修正
cd C:\openapi-generator-cli

rem クライアント側のビルド
java -jar ./openapi-generator-cli-6.2.1.jar generate -g csharp-netcore -i ./openapi.yaml -o ./.gen_client -c ./clientConfig.json --global-property modelTests=false,apiTests=false

rem サーバ側のビルド
java -jar ./openapi-generator-cli-6.2.1.jar generate  -g aspnetcore  -i ./openapi.yaml -o ./.gen_server  -c ./serverConfig.json --global-property modelTests=false,apiTests=false

PAUSE

3.3. サーバ側の設定ファイルを作成する

  • ASP.Net Core 6 を指定する
  • 作成したクラスを継承する想定のためabstractクラスに設定している
serverConfig.json
{
   "operationModifier":"abstract",
   "aspnetCoreVersion":"6.0",
   "buildTarget":"library",
   "isLibrary":true,
  "packageName":"Org.OpenAPITools.Server"
}

3.4. クライアント側の設定ファイルを作成する

  • .Net6を指定する
serverConfig.json
{
  "targetFramework":"net6.0",
  "packageName":"Org.OpenAPITools.Client"
}

3.5. バッチファイルを実行する

build.bat を実行すると、下記フォルダにジェネレートしたファイルが出力された

  • フォルダ構成
C:\openapi-generator-cli
 .gen_client ・・・ Generateしたクライアント側クラスを出力するフォルダ
 .gen_server ・・・ Generateしたサーバ側クラスを出力するフォルダ
 openapi.yaml ・・・ OpenAPIのスキーマファイル
 clientConfig.json  ・・・ クライアント側の設定ファイル
 serverConfig.json ・・・ サーバー側の設定ファイル

4. 参考文献

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1