Bot Frameworkのテンプレートに含まれてたAutoRestなるものが非常に気になったのでいろいろまとめです。
ちなみに日本語の資料どころか英語の資料もろくに出てこなかったので誰かまとめてください
AutoRestとは
GithubのAzureのリポジトリで公開されてるツールです。
どうもSwagger.jsonを食わせるといい感じにクライアントのコードを吐き出してくれるみたいなツールっぽいです
結構多言語に渡って生成できるようです。
Bot Frameworkのテンプレートに入っているのは下の画像みたいなやつ
ちなみにこのClientRuntimeは、REST APIを叩くための便利ライブラリみたいな感じっぽいです。
AutoRestをインストール
ツールのインストール自体はChcolateyで行います。
choco install autorest
これだけ。超簡単
早速使ってみる
{ "swagger": "2.0", "info": { "title": "MyClient", "version": "1.0.0" }, "host": "swaggersample.azurewebsites.net", "paths": { "/api/HelloWorld": { "get": { "operationId": "GetGreeting", "produces": [ "application/json" ], "responses": { "200": { "description": "GETs a greeting.", "schema": { "type": "string" } } } } } } }
とりあえずswagger.jsonはサンプルそのままで
使ってみる
Chocolateyでインストールしてあれば、パスが通ってるので
AutoRest
コマンドが使えます。
C#だったら以下のような感じでコマンド打つとコードが生成されます
AutoRest -CodeGenerator CSharp -Modeler Swagger -Input swagger.json -Namespace MyNamespace
処理が完了すると以下の3つのファイルが生成されます。
- IMyClient.cs
- MyClient.cs
- MyClientExtensions.cs
読み込んだSwagger.jsonの情報を基にAPIを叩くクライアントのコードになります。
これを以下のようにして叩くといい感じにAPIと対話ができるみたいな感じになります。
var myClient = new MyClient(); var salutation = myClient.GetGreeting(); Console.WriteLine(salutation);
以下みたいなコードとか、Swagger.jsonに記述してある情報をそのまま入れてくれるのでわざわざ何度も書く必要なく自動生成されるのはすごくありがたいですね
public MyClient(HttpClientHandler rootHandler, params DelegatingHandler[] handlers) : base(rootHandler, handlers) { this._baseUri = new Uri("http://swaggersample.azurewebsites.net"); }
まとめ
Swaggerを食わせてクライアントを自動生成する前にSwagger書けるようになったほうがいいと思います。(小並感)
Bot Frameworkだと、いろいろなAPIが出てくると思うのでこういう楽できる方法があれば積極的に入れていったほうがQoLも高まりそう