10
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

openapi-generator-cliを使ってみた

Posted at

はじめに

@openapitools/openapi-generator-cli を試使用したメモ書き。

OpenAPI Specificationとは

Open API Specificationとは

What Is OpenAPI?
OpenAPIとは、RESTful APIを記述するためのフォーマットのこと。
Swagger 2.0を拡張して実装されている。

出典:https://qiita.com/teinen_qiita/items/e440ca7b1b52ec918f1b

Open API Generatorとは

Open API Generatorとは

OpenAPI generatorは(中略)、OpenAPI Specificationを元にクライアントやサーバのコードを生成するソフトウェアです。

出典:https://qiita.com/amuyikam/items/e8a45daae59c68be0fc8#openapi-generator

なお、このOpen API GeneratorはOpenAPI Specificationを発行している非営利団体Open API Initiativeとは無関係に、コミュニティが開発しているツールである。

openapi-generatorを実際にやってみた

generator はjar,npm,dockerなどの多様な形式で提供されている。
今回はnpm版を使う。

以下の2つのファイルをどっかのディレクトリに置いて、

  1. package.json
  2. petstore.openapi.yml

以下のスクリプトを実行すると、python,java,javascriptのserver side とclient sideのコードが生成される。

yarn install
# generate server side code
mkdir server
yarn gen:python-flask
yarn gen:spring
yarn gen:nodejs-express-server
# generate client side code
mkdir client
yarn gen:python
yarn gen:java
yarn gen:javascript

ちなみに、このgeneratorの注意点は 60種類以上のgenerator が提供されているにもかかわらず、OpenAPI Specificationを完全にサポートした言語はないことだ。といっても、非対応なものは Custom DataType, MultiServerなど のレア?なものに限られるようだが。・・・多分、大丈夫。

swagger-codegenは

これとは別にSmartBear社が商用で開発しているswagger-codegenというツールもある。

これも使っては見たが…。正直不具合が多すぎてどうしようもない。まずpythonもjavaもそもそも実行すらできず。javaはpom.xml間違ってるし、Pythonはimport足りてないし。

swagger-codegenは、現時点(2020/5/2)でissueが2265件あって、直近1ヶ月間でcloseできたissue の件数は17件、新たに増えたissueが40件。もうダメやん。

つかうならopenapi-generator一択かな。

10
6
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
10
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?