swagger × spring cloud
TRANSCRIPT
![Page 1: Swagger × spring cloud](https://reader034.vdocuments.mx/reader034/viewer/2022051502/58f0679a1a28ab4d378b45b7/html5/thumbnails/1.jpg)
Swagger × Spring Cloud@int128
(Hidetake Iwata)
![Page 2: Swagger × spring cloud](https://reader034.vdocuments.mx/reader034/viewer/2022051502/58f0679a1a28ab4d378b45b7/html5/thumbnails/2.jpg)
![Page 3: Swagger × spring cloud](https://reader034.vdocuments.mx/reader034/viewer/2022051502/58f0679a1a28ab4d378b45b7/html5/thumbnails/3.jpg)
Open API Specification / Swagger
REST APIの仕様をJSONやYAMLで記述できる。
ツールセットが提供されている。
● Swagger Editor(エディタ)
● Swagger UI(APIコンソール)
● Swagger Codegen(コード自動生成)
![Page 4: Swagger × spring cloud](https://reader034.vdocuments.mx/reader034/viewer/2022051502/58f0679a1a28ab4d378b45b7/html5/thumbnails/4.jpg)
Swagger Codegen
Swagger YAMLからいろんな言語のソースコードを自動生成する
ツール。JARで提供されている。
● Java● Node.js● PHP● などなど
※逆に、アノテーションからAPI仕様を生成する方法もある
![Page 5: Swagger × spring cloud](https://reader034.vdocuments.mx/reader034/viewer/2022051502/58f0679a1a28ab4d378b45b7/html5/thumbnails/5.jpg)
Swagger Codegen × Spring
以下のテンプレートを選択できる:
1. spring-mvc○ APIサーバのControllerとModelが自動生成される
○ Spring MVC2. spring-cloud
○ APIクライアントのClientとModelが自動生成される
○ Spring Cloud Feign
![Page 6: Swagger × spring cloud](https://reader034.vdocuments.mx/reader034/viewer/2022051502/58f0679a1a28ab4d378b45b7/html5/thumbnails/6.jpg)
自動生成コードの取り扱い
自動生成されたコードは変更しない。
JARに切り出して、ビルドツールで依存関係を張る。
地獄のパターン:
● 自動生成されたコードをいじる(ControllerやModel)● API仕様が変わる
● コードに変更を取り込む?
![Page 7: Swagger × spring cloud](https://reader034.vdocuments.mx/reader034/viewer/2022051502/58f0679a1a28ab4d378b45b7/html5/thumbnails/7.jpg)
自動生成コード:
● Controllerクラス
○ ServiceクラスをDIしてメソッド実行
○ テンプレートをカスタマイズ
● Modelクラス
実装コード:
● Serviceクラス:ビジネスロジックを実装
自動生成コードと実装コードをDIで分離
![Page 8: Swagger × spring cloud](https://reader034.vdocuments.mx/reader034/viewer/2022051502/58f0679a1a28ab4d378b45b7/html5/thumbnails/8.jpg)
Gradle Swagger Generator Plugin
Swagger YAMLからソースコードやドキュメントを生成
https://github.com/int128/gradle-swagger-generator-plugin
![Page 9: Swagger × spring cloud](https://reader034.vdocuments.mx/reader034/viewer/2022051502/58f0679a1a28ab4d378b45b7/html5/thumbnails/9.jpg)
![Page 10: Swagger × spring cloud](https://reader034.vdocuments.mx/reader034/viewer/2022051502/58f0679a1a28ab4d378b45b7/html5/thumbnails/10.jpg)
![Page 11: Swagger × spring cloud](https://reader034.vdocuments.mx/reader034/viewer/2022051502/58f0679a1a28ab4d378b45b7/html5/thumbnails/11.jpg)
![Page 12: Swagger × spring cloud](https://reader034.vdocuments.mx/reader034/viewer/2022051502/58f0679a1a28ab4d378b45b7/html5/thumbnails/12.jpg)
Thank you
![Page 13: Swagger × spring cloud](https://reader034.vdocuments.mx/reader034/viewer/2022051502/58f0679a1a28ab4d378b45b7/html5/thumbnails/13.jpg)
2002年
2003年
2004年
2005年
Spring 1.0がリリースされたのはいつ?