Swagger
OpenAPIを用いてRESTful APIを設計する際に使用するツールセット
Open API Initiativeが推進している
website
#WIP
何が嬉しい?
調べれば調べるほどいろいろ出てきて非常にめんどいんだがmrsekut.icon
どれを見れば体系的に学べるのかもよくわからない
いったん保留しようかな。↓がだるかった
関連するツールやlibraryが多すぎてどれを使えばいいのかわからない
swaggerの何が嬉しいのかそもそもよくわかっていない
yamlにしても、jsdocにしてもかくのがだるすぎる
型から生成しろ
typera-openapiあったけど、使い方がわからん
used by見たけどよくわからんかった
何ができる?
Swagger Spec を書いておけば自動的にドキュメント生成
ドキュメントてなに #??
https://petstore.swagger.io/#/pet/uploadFile こんな感じのやつ
ドキュメントから実際のリクエストを投げられる
paramsとか設定したり
apiの検索ができる
etc
bottom upにやっていく方法と、top downにやっていく方法とある
Swagger Specを記述し、それの基づきAPI(モック)を生成する方法(トップダウン)
既存のAPIにアノテーションを記述しSwagger Specを生成する方法(ボトムアップ)
#??
ドキュメントと実装は別々
個人開発でも有用?
ドキュメントの自動生成が嬉しいポイントなのか?よくわからん
mockを作れる?
何が嬉しい?
OpenAPIとの関係性がよくわからない
documentを作れるのはわかったが、documentが作れたら何が嬉しいの?
手で書くのと何が異なる?
コメントであっても仕様書書くのだるくない?
型から生成してくれよ..
↓この辺のツールは組み合わせて使うものなのか?
ツール
Swagger Spec
REST APIに対して Swagger の仕様に準じたドキュメント
Swagger Editor
Web上でプレビューをみながら編集できるEditor
Swagger Specの設計書を記載する
https://editor.swagger.io/
Swagger UI
Swagger Specで記載された設計からドキュメントをHTML形式で自動生成する
指定のyaml, jsonファイルを元にAPIリファレンスをWeb上に表示する
Web上でAPIを実行できる
Swagger Codegen
Swagger Spec で記載された設計からAPIのスタブを自動生成
Swagger Viewer
VSCode拡張
ReDoc
https://github.com/Redocly/redoc
前提として
APIのdocsを書くツールは色々ある
その内の一つにswaggerがある
OpenAPIは、それらのツールの書き方を統一するための仕様
これはSwaggerより後発であり、
Swaggerをベースに仕様を作るわ、という感じになったらしい
YAMLとかJSONとかソースコメントとかいろんな書き方ができる
ドキュメントにAPIを実行するためのフォームが付いてくる
いろんなツールがあって、導入が複雑
なぜOpenAPI Specificationで書くか ref
OAS3.0で記述すことにより、API仕様書はどの言語にも依存していない
API仕様書からさまざまな言語に出力するライブラリが存在する
品質を担保できる
実装速度を高めることができる
なぜ #??
ExpressでSwaggerを使う
https://blog.mamansoft.net/2019/06/18/create-api-specification-with-express/
$ npm i -D swagger-ui-express swagger-jsdoc @types/swagger-ui-express @types/swagger-jsdoc
swagger-ui-express
Swagger UIのドキュメントをExpressから配信できるようにする
どういう意味 #??
https://github.com/scottie1984/swagger-ui-express
swagger-jsdoc
JSDocからSwagger UIで使用可能なjsonを作成
コメント上のtypoは防げないのか #??
typera-openapiあるやん
https://github.com/akheron/typera-openapi
openapi-generator
openapiのymlからtypescriptの型定義を生成する
デファクトスタンダードらしい
https://azukiazusa.dev/blog/typescript-dry-type-definition/
似たようなlibraryが多すぎて辛い
openapi-typescript
https://github.com/drwpow/openapi-typescript
https://www.forcia.com/blog/001552.html
swt2dtsと似たようなやつで、こちらのほうがいいらしい
全く見てないのでしらんけど
swt2dts
https://github.com/mstssk/sw2dts
https://www.forcia.com/blog/001552.html
OpenAPIの定義からリクエスト、レスポンスの型定義を自動生成
openapi-types
https://github.com/kogosoftwarellc/open-api/tree/master/packages/openapi-types
swagger-express-ts
https://github.com/olivierlsc/swagger-express-ts
swagger-typescript-api
https://github.com/acacode/swagger-typescript-api
TypeScript API generator via Swagger scheme
OpenAPIのspecから、tsの型を生成する
https://zenn.dev/watahaya/articles/2f4a716c47903b
swagger-cli
https://himenon.github.io/docs/openapi/typescript-code-gen/#なぜopenapi-specificationで書くか
api-spec-converter
https://himenon.github.io/docs/openapi/typescript-code-gen/#なぜopenapi-specificationで書くか
openapi-ypescript-code-generator
https://himenon.github.io/docs/openapi/typescript-code-gen/#なぜopenapi-specificationで書くか
prism-cli
https://himenon.github.io/docs/openapi/typescript-code-gen/#なぜopenapi-specificationで書くか