autorestでAPIクライアントの自動生成

Python, Swagger

OpenAPI仕様(旧Swagger)からAPIクライアントのSDKを生成するツールにswagger-codegenがありますが。
同様のツールとしてMicrosoftのオープンソースにautorestがあったので試してみました。

autorestは以下の言語の自動生成に対応しています。
C#, Go, Java, Node.js, TypeScript, Python, Ruby, PHP

swagger-codegenの対応言語一覧はこちら

インストール

autorestコマンドを使えるようにします。
ちなみに、Node.js 7.10以上が必要です。

OpenAPI Specification

今回は以下のようなAPI仕様を定義したとします。

Pythonクライアントの生成

autorestを呼び出してクライアントを生成します。
--python オプションでPythonクライアントになります。
詳細なオプションはこちらを参考に。

Pythonクライアントのソース

自動生成されたクライアントのソースコードをautorestとswagger-codegenで比較してみました。

autorest版

swagger-codegen版(比較用)

感想

まだautorest版のクライアントは使用していないのですがソースを見た感じの感想です。

  • swagger-codegenのいいところ
    • OperationId を書かなかった場合にPathから自動で関数名が定義されるのでIDの重複を気にしたり余計なルールを用意しなくて済む
    • APIと通信するクライアントを別で生成してAPIの処理に渡せるのでクライアントが使い回せて認証処理を毎回書く必要がない
  • autorestのいいところ
    • OpenAPI仕様で記述したエラーの場合の詰め替えを自動でやってくれるのでSDKの呼び出し元で(余計な)例外処理をしなくて済む
    • 生成されたソースが読みやすい気がする

Python, Swagger