Skip to content

OpenAPI

OpenAPIのyamlを結合する

一つのopenapi.yamlに定義を書いていると、ファイルが肥大化して管理というか編集が大変になる。

で、分割するには$refを使って相対ファイル指定することで、外部ファイルを参照できる。

ただ、Swagger UIでダウンロードしようとすると、ルートのファイルしか取れない(相対ファイルを辿ればとれるだろうけど面倒)。

Read more

Prism使ってみた

APIサーバーのモックを手っ取り早くほしかったのでstoplightio/prism: Turn any OpenAPI2/3 and Postman Collection file into an API server with mocking, transformations and validations.を試してみた。

POSTのレスポンスがexample指定してるはずなのに、空で返ってきてよくわからない。

モック対象がそんなに多くなかったから、とりあえずgoで組んだ。

これだとサーバー側の仕様変更に追従できないから、時間あるときに解決したい。

Read more

OpenAPI generatorのテンプレート

以前、OpenAPI generatorの出力をカスタマイズするにはJavaを読み解かねば・・みたいなことを書いていた。

公式のUsing Templatesによると、author templateを指定すれば組み込みテンプレートが出力されるとのこと。で、出力されたディレクトリを-tで指定すると、そこにあるテンプレートを使って生成される。

Read more

OpenAPIとAPI Gateway

API GatewayにOpenAPIの定義を適用できる。 OpenAPI を使用した REST API の設定 - Amazon API Gateway

API Gatewayの後ろにLambdaを使えば、EC2とかでGoのコンテナ動かすより安上がりになるのではないか?という思い付き。

この場合、APIサーバーはどういう構成で作るのかイメージがわかない。

現状は、openapi-generatorで生成したmodelやらを使ってやり取りしているが、lambdaだとエントリーポイントごとにmainパッケージを用意する?

Read more

OpenAPIのTypeScriptクライアント

結局、いくつか動かして試してみた。additional-propertiesは無指定で。

ということで、typescript-axios でやってみようと思う。

OpenAPIで生成したサーバーのテスト2

E2Eテスト書くなら、OpenAPIのクライアントコードジェネレータ使って出力したもの使えばよいのでは? と思いついたので、どのクライアントにしようかとGenerators Listを眺める。

せっかくだからTypeScriptが良いなと思うが、11種類もあってどれが適切なのか判断付かない。 実際に生成して使って比較すればよいのだろうけど、そこまで詳しくない言語でそれをやろうとすると挫折する気しかしない。

Read more

OpenAPIで生成したサーバーのテスト

よくわからない。

ググるとhttptest使う例が良く出てくるけど、型が合わなくて組み立てられない。

仕方ないので、APIサーバー起動してhttp.NewRequestWithContextで叩いて結果を見るという、E2Eっぽいテストに落ち着きそう。

OpenAPI generatorのソース

openapi-generator/GoServerCodegen.java at master · OpenAPITools/openapi-generator

この辺りから読み始めればよいのかな? けどJavaかぁ。。

Javaは出始めのころちょっと触って、今もそうかもしれないけど、パッケージ名の命名にドメインを逆順で、みたいのが当時ドメインとか持ってなくてどうすればいいんだ?ってなって躓いた。

あとなんかインポートするの長くて呪文みたいだなーって思ってそっと閉じた思い出。

Read more