Gtk3アプリ RiderとOpenApi

###SpotlightSudioの導入
Yaml自動生成支援ソフトを利用する。
パラメーターを入力するとYamlを自動生成してくれます。

https://future-architect.github.io/articles/20191008/

https://blog.takeyuweb.co.jp/entry/2020/05/11/000000

https://stoplight.io/studio/

#### New Open APiから新規作成　

アクセストークがいらないPublicApiを利用します

https://thr3a.hatenablog.com/entry/20200919/1600480282

ttps://public.api.nicovideo.jp/v1/channel/channelapp/content/videos.json?page=1&channelId=2645675&sort=startedAt

New Open Apiから新規に作成する
<img width="500" alt="Screenshot from 2021-06-01 16-00-28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/fa7ad23c-1e50-0d10-e7df-bddeb3ac9ef2.png">

左上のyamlをダブルクリックすると表示される。APIとEndPointをクリック 
<img width="550" alt="Screenshot from 2021-06-01 16-00-46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/3871a5db-8f2d-accb-d4f8-12da8f954dd7.png">

APIOverViewでベースURLを設定します
<img width="550" alt="Screenshot from 2021-06-01 16-00-46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/2185f8f2-2739-3ccc-c130-70c85dadf7f3.png">

####エンドポイントの作成
パスURLの最後とパラメーターを入力する
<img width="550" alt="Screenshot from 2021-06-01 16-04-31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/1a618def-7223-0871-c1e1-0c6bdf3cda62.png">

####モデルの作成
Jsonを貼り付けることでモデルが作成される
<img width="550" alt="Screenshot from 2021-06-01 16-11-14.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/de4fbe65-63ce-6825-a7a4-6982c742b8e1.png">
####モデルとエンドポイントのレスポンスを紐付ける
エンドポイントのレスポンスとモデルを紐付ける
$refボタンを押すことでmodelをリファレンスする
<img width="500" alt="Screenshot from 2021-06-01 15-11-31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/df5bb7ba-195a-4d74-5266-134615aa62ad.png">
$refボタンを押してmodelを検索する
<img width="500" alt="Screenshot from 2021-06-01 15-11-48.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/f676e30f-2289-1d9f-d092-639bcc6bd49c.png">
####Yamlを書き出す
右クリックからExport
<img width="200" alt="Screenshot from 2021-06-01 16-11-29.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/9ea53f0d-9bc2-8ba0-3e7c-6940ab1e4035.png">

###RiderにOpenApiのプラグインの導入
Yamlのエディタ、プレビューが利用可能に
SwaggerCodeGenの実行環境をウィンドウから設定できるようになる

https://plugins.jetbrains.com/plugin/14394-openapi-specifications

####プラグインの導入
RiderにOpenApi支援プラグインをインストールします
<img width="500" alt="Screenshot from 2021-06-01 16-06-32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/2428850e-f938-a2b3-3fa3-43ebb8a28564.png">
yamlファイルをクリックするとプレビューとエディタが利用可能に
<img width="500" alt="Screenshot from 2021-06-01 16-06-32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/5bfe6189-0a32-c035-a431-ceba61e6795e.png">
プラグインを入れた状態だと実行構成にSwagger Codegenのテンプレートが表示される
<img width="400" alt="Screenshot from 2021-06-01 16-17-35.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/6bab4665-1dfe-b9d3-036e-01b03b23d8dd.png">
####実行構成にパスを設定する
仕様書パスにYamlファイルのパス
ファイルの生成場所を設定する
ジュネレーターパスはswagger codegenのソースをmavenがビルドしてバイナリにしてダウンロードしてくれます
<img width="450" alt="Screenshot from 2021-06-02 13-22-44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/3ee91b04-fa0c-2dc0-b352-13f736c05708.png">
codegenジェネレーターのテンプレートはバージョンによって違います
<img width="400" alt="Screenshot from 2021-06-02 13-23-31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/875d5851-97b7-d92e-6445-32c6f8a522d6.png">
####コードの生成
設定が完了すると実行ボタンが表示される
<img width="200" alt="Screenshot from 2021-06-02 13-32-01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/58dd0d92-d1c6-58ff-d32b-59c01cb721e3.png">
Yamlファイルの上にも生成ボタンが表示される
<img width="200" alt="Screenshot from 2021-06-02 13-32-01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/705092a1-f35a-ee14-e856-f3704bef11ee.png">
ボタンを押すとAPIクライアントを生成してくれます
<img width="200" alt="Screenshot from 2021-06-02 13-22-44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/f260ed95-91e1-4e4f-4e27-8309886d35a4.png">
####書き出されたAPIクライアント　Org.OpenAPIToolsの使用例
OpenApi Generater 5で書き出すとOrg.OpenAPIToolsプロジェクト一式が書き出されます。
書き出されたプロジェクトファイルを作業しているExploerの同じ階層に読み込みます。
<img width="200" alt="Screenshot from 2021-06-02 13-22-44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/cb6594b1-e4c3-39f9-368a-4560286a9f5e.png">
dllを参照する感じでAssmblyのところで右クリックでOrg.OpenAPIToolsプロジェクトを参照します。
<img width="400" alt="Screenshot from 2021-06-02 13-22-44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/c6293711-a23d-909a-1cfa-f3385b98cc88.png">
####課題
codegenジェネレーターで書き出されるAPIクライアントはいろいろあるので比べてみる必要がある。
APIクライアントで２度目以降書き出さなくてよいファイルを隔離しないといけない

https://openapi.tools/

[RiderとTypeScript](https://qiita.com/tana_/items/a5bfeff6e9989393156f)に続く