OpenAPIのyamlを結合する
一つのopenapi.yamlに定義を書いていると、ファイルが肥大化して管理というか編集が大変になる。
で、分割するには$ref
を使って相対ファイル指定することで、外部ファイルを参照できる。
ただ、Swagger UIでダウンロードしようとすると、ルートのファイルしか取れない(相対ファイルを辿ればとれるだろうけど面倒)。
Read morePOSTS
一つのopenapi.yamlに定義を書いていると、ファイルが肥大化して管理というか編集が大変になる。
で、分割するには$ref
を使って相対ファイル指定することで、外部ファイルを参照できる。
ただ、Swagger UIでダウンロードしようとすると、ルートのファイルしか取れない(相対ファイルを辿ればとれるだろうけど面倒)。
Read moreAPIサーバーのモックを手っ取り早くほしかったのでstoplightio/prism: Turn any OpenAPI2/3 and Postman Collection file into an API server with mocking, transformations and validations.を試してみた。
POSTのレスポンスがexample指定してるはずなのに、空で返ってきてよくわからない。
モック対象がそんなに多くなかったから、とりあえずgoで組んだ。
これだとサーバー側の仕様変更に追従できないから、時間あるときに解決したい。
Read morePrismaのドキュメント眺めていて、Build a REST API with NestJS, Prisma, PostgreSQL and Swaggerを見つけた。
PrismaというかNestJSの機能かもしれないけれど、OpenAPIドキュメントも表示できるっぽい。
これでいい感が出てきた。
以前、OpenAPI generatorの出力をカスタマイズするにはJavaを読み解かねば・・みたいなことを書いていた。
公式のUsing Templatesによると、author template
を指定すれば組み込みテンプレートが出力されるとのこと。で、出力されたディレクトリを-t
で指定すると、そこにあるテンプレートを使って生成される。
API GatewayにOpenAPIの定義を適用できる。 OpenAPI を使用した REST API の設定 - Amazon API Gateway
API Gatewayの後ろにLambdaを使えば、EC2とかでGoのコンテナ動かすより安上がりになるのではないか?という思い付き。
この場合、APIサーバーはどういう構成で作るのかイメージがわかない。
現状は、openapi-generatorで生成したmodelやらを使ってやり取りしているが、lambdaだとエントリーポイントごとにmainパッケージを用意する?
Read more結局、いくつか動かして試してみた。additional-properties
は無指定で。
ReferenceError: _ is not defined
Module not found: Can't resolve 'request'
ということで、typescript-axios でやってみようと思う。
E2Eテスト書くなら、OpenAPIのクライアントコードジェネレータ使って出力したもの使えばよいのでは? と思いついたので、どのクライアントにしようかとGenerators Listを眺める。
せっかくだからTypeScriptが良いなと思うが、11種類もあってどれが適切なのか判断付かない。 実際に生成して使って比較すればよいのだろうけど、そこまで詳しくない言語でそれをやろうとすると挫折する気しかしない。
Read moreよくわからない。
ググるとhttptest使う例が良く出てくるけど、型が合わなくて組み立てられない。
仕方ないので、APIサーバー起動してhttp.NewRequestWithContextで叩いて結果を見るという、E2Eっぽいテストに落ち着きそう。
Documentation for the go Generatorで生成したは良いけれど、使い方がわからず試行錯誤してみていたら、生成したdocsの中にサンプルコードが書かれていた。。
構造体のドキュメントとかだと思ってスルーしてたのが敗因。 生成物はちゃんと見ましょう。
openapi-generator/GoServerCodegen.java at master · OpenAPITools/openapi-generator
この辺りから読み始めればよいのかな? けどJavaかぁ。。
Javaは出始めのころちょっと触って、今もそうかもしれないけど、パッケージ名の命名にドメインを逆順で、みたいのが当時ドメインとか持ってなくてどうすればいいんだ?ってなって躓いた。
あとなんかインポートするの長くて呪文みたいだなーって思ってそっと閉じた思い出。
Read more