Submit Search
Upload
SwaggerとAPIのデザイン
•
3 likes
•
3,719 views
Kazuhiro Hara
Follow
Swaggerではじめる楽々RESTful APIデザイン&ドキュメント管理
Read less
Read more
Technology
Report
Share
Report
Share
1 of 33
Download now
Download to read offline
Recommended
buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話
buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話
Kazuhiro Hara
React VR ことはじめ
React VR ことはじめ
Kazuhiro Hara
Clojure の各種React系ラッパーライブラリのサーバーサイドレンダリングの現状について
Clojure の各種React系ラッパーライブラリのサーバーサイドレンダリングの現状について
Kazuhiro Hara
React系(別言語含む)の サーバーサイドレンダリング について考えよう
React系(別言語含む)の サーバーサイドレンダリング について考えよう
Kazuhiro Hara
Swaggerを利用した新規サービス開発
Swaggerを利用した新規サービス開発
recotech
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
Tomoki Oyamatsu
ClojureでElectronアプリを作ろう
ClojureでElectronアプリを作ろう
Kazuhiro Hara
One Time Binding & Digest Loop
One Time Binding & Digest Loop
Kon Yuichi
Recommended
buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話
buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話
Kazuhiro Hara
React VR ことはじめ
React VR ことはじめ
Kazuhiro Hara
Clojure の各種React系ラッパーライブラリのサーバーサイドレンダリングの現状について
Clojure の各種React系ラッパーライブラリのサーバーサイドレンダリングの現状について
Kazuhiro Hara
React系(別言語含む)の サーバーサイドレンダリング について考えよう
React系(別言語含む)の サーバーサイドレンダリング について考えよう
Kazuhiro Hara
Swaggerを利用した新規サービス開発
Swaggerを利用した新規サービス開発
recotech
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
Tomoki Oyamatsu
ClojureでElectronアプリを作ろう
ClojureでElectronアプリを作ろう
Kazuhiro Hara
One Time Binding & Digest Loop
One Time Binding & Digest Loop
Kon Yuichi
Gradleどうでしょう
Gradleどうでしょう
Takuma Watabiki
Windows コンテナを AKS に追加する
Windows コンテナを AKS に追加する
Yuto Takei
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
Issei Hiraoka
Bicep + VS Code で楽々Azure Deploy
Bicep + VS Code で楽々Azure Deploy
Takekazu Omi
Swagger 入門
Swagger 入門
Yoshiaki Yoshida
Jjug 20140430 gradle_advanced
Jjug 20140430 gradle_advanced
Masatoshi Hayashi
GitHub + Circle CI で幸せになろう
GitHub + Circle CI で幸せになろう
Nobuhiro Ueda
Riot + generator で始める新しいデータバインディング
Riot + generator で始める新しいデータバインディング
Tsutomu Kawamura
VSCode Conference Japan 2021 kyusque
VSCode Conference Japan 2021 kyusque
kyusque
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
Hiroyuki Kusu
海外で注目されてるJs framework “mithril”の特徴
海外で注目されてるJs framework “mithril”の特徴
Shoyo Kyou
Github codespaces すごく良い。もうこれで 十分なんじゃという話
Github codespaces すごく良い。もうこれで 十分なんじゃという話
xiidec
Riotjsハンズオン
Riotjsハンズオン
omi end
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみる
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみる
zuya
Rancher使ってみたよ(初心者向け)
Rancher使ってみたよ(初心者向け)
Shun Sumiya
インフラ部門で働くCプログラマの話
インフラ部門で働くCプログラマの話
雅也 山本
はじめての CircleCI
はじめての CircleCI
Yosuke Mizutani
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
Takao Tetsuro
Om Next ~React.jsを超えて
Om Next ~React.jsを超えて
Kazuki Tsutsumi
AWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguro
Kenta Suzuki
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 spring
kounan13
全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験
AdvancedTechNight
More Related Content
What's hot
Gradleどうでしょう
Gradleどうでしょう
Takuma Watabiki
Windows コンテナを AKS に追加する
Windows コンテナを AKS に追加する
Yuto Takei
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
Issei Hiraoka
Bicep + VS Code で楽々Azure Deploy
Bicep + VS Code で楽々Azure Deploy
Takekazu Omi
Swagger 入門
Swagger 入門
Yoshiaki Yoshida
Jjug 20140430 gradle_advanced
Jjug 20140430 gradle_advanced
Masatoshi Hayashi
GitHub + Circle CI で幸せになろう
GitHub + Circle CI で幸せになろう
Nobuhiro Ueda
Riot + generator で始める新しいデータバインディング
Riot + generator で始める新しいデータバインディング
Tsutomu Kawamura
VSCode Conference Japan 2021 kyusque
VSCode Conference Japan 2021 kyusque
kyusque
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
Hiroyuki Kusu
海外で注目されてるJs framework “mithril”の特徴
海外で注目されてるJs framework “mithril”の特徴
Shoyo Kyou
Github codespaces すごく良い。もうこれで 十分なんじゃという話
Github codespaces すごく良い。もうこれで 十分なんじゃという話
xiidec
Riotjsハンズオン
Riotjsハンズオン
omi end
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみる
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみる
zuya
Rancher使ってみたよ(初心者向け)
Rancher使ってみたよ(初心者向け)
Shun Sumiya
インフラ部門で働くCプログラマの話
インフラ部門で働くCプログラマの話
雅也 山本
はじめての CircleCI
はじめての CircleCI
Yosuke Mizutani
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
Takao Tetsuro
Om Next ~React.jsを超えて
Om Next ~React.jsを超えて
Kazuki Tsutsumi
AWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguro
Kenta Suzuki
What's hot
(20)
Gradleどうでしょう
Gradleどうでしょう
Windows コンテナを AKS に追加する
Windows コンテナを AKS に追加する
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
Bicep + VS Code で楽々Azure Deploy
Bicep + VS Code で楽々Azure Deploy
Swagger 入門
Swagger 入門
Jjug 20140430 gradle_advanced
Jjug 20140430 gradle_advanced
GitHub + Circle CI で幸せになろう
GitHub + Circle CI で幸せになろう
Riot + generator で始める新しいデータバインディング
Riot + generator で始める新しいデータバインディング
VSCode Conference Japan 2021 kyusque
VSCode Conference Japan 2021 kyusque
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
海外で注目されてるJs framework “mithril”の特徴
海外で注目されてるJs framework “mithril”の特徴
Github codespaces すごく良い。もうこれで 十分なんじゃという話
Github codespaces すごく良い。もうこれで 十分なんじゃという話
Riotjsハンズオン
Riotjsハンズオン
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみる
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみる
Rancher使ってみたよ(初心者向け)
Rancher使ってみたよ(初心者向け)
インフラ部門で働くCプログラマの話
インフラ部門で働くCプログラマの話
はじめての CircleCI
はじめての CircleCI
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
Om Next ~React.jsを超えて
Om Next ~React.jsを超えて
AWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguro
Similar to SwaggerとAPIのデザイン
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 spring
kounan13
全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験
AdvancedTechNight
Good-Bye Swagger
Good-Bye Swagger
katada-yuki
Google Cloud Messaging for Android ことはじめ(Eclipseから動かしてみる編)
Google Cloud Messaging for Android ことはじめ(Eclipseから動かしてみる編)
kojiokb
Azure DevOps で始めるスタートダッシュ
Azure DevOps で始めるスタートダッシュ
Yasuaki Matsuda
Open modeler
Open modeler
Yoshiki Izumi
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift
Etsuji Nakai
Web制作勉強会 #2
Web制作勉強会 #2
Moto Yan
Swaggerで始めるモデルファーストなAPI開発
Swaggerで始めるモデルファーストなAPI開発
Takuro Sasaki
How To Drink Wsgi
How To Drink Wsgi
Atsushi Odagiri
多分モダンなWebアプリ開発
多分モダンなWebアプリ開発
tak-nakamura
サーバーレスの今とこれから
サーバーレスの今とこれから
真吾 吉田
grpc-gateway を試してみた fukuoka.go#11
grpc-gateway を試してみた fukuoka.go#11
Yutaka Tachibana
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
Yu Nobuoka
Scalaでのプログラム開発
Scalaでのプログラム開発
Kota Mizushima
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
真吾 吉田
HTML5-20100626
HTML5-20100626
Taku AMANO
高速!Clojure Web 開発入門
高速!Clojure Web 開発入門
Kazuki Tsutsumi
Jawsug chiba API Gateway
Jawsug chiba API Gateway
Takuro Sasaki
アプリ開発&チーム管理で役立った拡張機能
アプリ開発&チーム管理で役立った拡張機能
Masaki Suzuki
Similar to SwaggerとAPIのデザイン
(20)
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 spring
全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験
Good-Bye Swagger
Good-Bye Swagger
Google Cloud Messaging for Android ことはじめ(Eclipseから動かしてみる編)
Google Cloud Messaging for Android ことはじめ(Eclipseから動かしてみる編)
Azure DevOps で始めるスタートダッシュ
Azure DevOps で始めるスタートダッシュ
Open modeler
Open modeler
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift
Web制作勉強会 #2
Web制作勉強会 #2
Swaggerで始めるモデルファーストなAPI開発
Swaggerで始めるモデルファーストなAPI開発
How To Drink Wsgi
How To Drink Wsgi
多分モダンなWebアプリ開発
多分モダンなWebアプリ開発
サーバーレスの今とこれから
サーバーレスの今とこれから
grpc-gateway を試してみた fukuoka.go#11
grpc-gateway を試してみた fukuoka.go#11
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
Scalaでのプログラム開発
Scalaでのプログラム開発
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
HTML5-20100626
HTML5-20100626
高速!Clojure Web 開発入門
高速!Clojure Web 開発入門
Jawsug chiba API Gateway
Jawsug chiba API Gateway
アプリ開発&チーム管理で役立った拡張機能
アプリ開発&チーム管理で役立った拡張機能
More from Kazuhiro Hara
MDX with Next.js
MDX with Next.js
Kazuhiro Hara
MDX and Next.js
MDX and Next.js
Kazuhiro Hara
About Plone Conference Tokyo 2018 Frontend Day
About Plone Conference Tokyo 2018 Frontend Day
Kazuhiro Hara
Gatsby & React Static
Gatsby & React Static
Kazuhiro Hara
Clojure.tokyo.descjop
Clojure.tokyo.descjop
Kazuhiro Hara
Re-frame and A-Frame
Re-frame and A-Frame
Kazuhiro Hara
ひとりアドベントカレンダーのご紹介
ひとりアドベントカレンダーのご紹介
Kazuhiro Hara
(IDEユーザのための) ClojureのEmacs開発環境について
(IDEユーザのための) ClojureのEmacs開発環境について
Kazuhiro Hara
Cryogenでサイトつくろーじぇん
Cryogenでサイトつくろーじぇん
Kazuhiro Hara
WebSocket+Akka(Remote)+Play 2.1 Java
WebSocket+Akka(Remote)+Play 2.1 Java
Kazuhiro Hara
第2回 -Play部屋- Play 2.0はじめて&もくもく会
第2回 -Play部屋- Play 2.0はじめて&もくもく会
Kazuhiro Hara
-Play部屋- Play 2.0はじめて&もくもく会
-Play部屋- Play 2.0はじめて&もくもく会
Kazuhiro Hara
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレード
Kazuhiro Hara
sbtマルチプロジェクトビルドの使いどころ
sbtマルチプロジェクトビルドの使いどころ
Kazuhiro Hara
Playbay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイ
Kazuhiro Hara
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
Kazuhiro Hara
PlayFramework1.2.4におけるWebSocket
PlayFramework1.2.4におけるWebSocket
Kazuhiro Hara
クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...
クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...
Kazuhiro Hara
WP Jelly vol.01 WordPress管理画面にメニューを追加しよう
WP Jelly vol.01 WordPress管理画面にメニューを追加しよう
Kazuhiro Hara
Play FrameworkとWeb Socketの話
Play FrameworkとWeb Socketの話
Kazuhiro Hara
More from Kazuhiro Hara
(20)
MDX with Next.js
MDX with Next.js
MDX and Next.js
MDX and Next.js
About Plone Conference Tokyo 2018 Frontend Day
About Plone Conference Tokyo 2018 Frontend Day
Gatsby & React Static
Gatsby & React Static
Clojure.tokyo.descjop
Clojure.tokyo.descjop
Re-frame and A-Frame
Re-frame and A-Frame
ひとりアドベントカレンダーのご紹介
ひとりアドベントカレンダーのご紹介
(IDEユーザのための) ClojureのEmacs開発環境について
(IDEユーザのための) ClojureのEmacs開発環境について
Cryogenでサイトつくろーじぇん
Cryogenでサイトつくろーじぇん
WebSocket+Akka(Remote)+Play 2.1 Java
WebSocket+Akka(Remote)+Play 2.1 Java
第2回 -Play部屋- Play 2.0はじめて&もくもく会
第2回 -Play部屋- Play 2.0はじめて&もくもく会
-Play部屋- Play 2.0はじめて&もくもく会
-Play部屋- Play 2.0はじめて&もくもく会
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレード
sbtマルチプロジェクトビルドの使いどころ
sbtマルチプロジェクトビルドの使いどころ
Playbay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイ
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework1.2.4におけるWebSocket
PlayFramework1.2.4におけるWebSocket
クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...
クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...
WP Jelly vol.01 WordPress管理画面にメニューを追加しよう
WP Jelly vol.01 WordPress管理画面にメニューを追加しよう
Play FrameworkとWeb Socketの話
Play FrameworkとWeb Socketの話
Recently uploaded
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
Hiroshi Tomioka
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
Recently uploaded
(9)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
SwaggerとAPIのデザイン
1.
SwaggerとAPIのデザイン Swaggerではじめる楽々RESTful APIデザイン&ドキュメント管理 2017/5/12 Okachi.js vol.5 第1回
2.
出演 {:company “Greative.GK” :name “Kazuhiro
Hara” :twitter “@kara_d” :interest “SPA, WebVR, Clojure, Design research”}
3.
Clojure / ClojureScript
で Electronアプリケーションを 作るためのスタートキット / プラットホーム ● オープンソースにてGitHubにて公開 ● MITライセンス ● 現在のスター数 : 289 http://descjop.org/ +9 Point up
4.
5.
本日のトピック
6.
SwaggerとAPIのデザイン http://swagger.io/
7.
もくじ 1. 問題意識 2. Swaggerとは 3.
ExpressとSwaggerのサンプルを見てみよう 4. 僕とSwagger (Clojureベースの環境で利用しています)
8.
問題意識
9.
RESTful APIのドキュメントどうしていますか?
10.
RESTful APIのドキュメントあれこれ ● Wikiで管理 ●
Word / Excelで管理 ● クラウドで同時編集可能なGoogle Docsで管理 ● リポジトリ内のドキュメント ● 何かの自動生成ツールとか
11.
RESTful APIのドキュメントあるある ● みんなに意見を聞く
12.
そこで Swagger!
13.
Swaggerとは
14.
15.
Swagger Swagger is a
powerful open source framework backed by a large ecosystem of tools that helps you design, build, document, and consume your RESTful APIs.
16.
Swagger Swaggerは、RESTful APIの設計、構築、文書化、および使用に役立つ、大規模なエコシステムツールを使用し た強力なオープンソースフレームワークです。(by Google翻訳)
17.
発音 スゥァガー(YouTube調べ)
18.
19.
Swaggerでできること(1) ● Swagger Editor ○
http://swagger.io/swagger-editor/ ○ APIの設計を視覚的に行うことが出来るツール ○ エディターエリアとプレビューエリアがある あとでデモします
20.
Swaggerでできること(2) ● Swagger Codegen ○
http://swagger.io/swagger-codegen/ ○ Swaggerで定義した仕様からサーバー側のコードを生成する ■ API clients ● ActionScript, Bash, C# (.net 2.0, 4.0 or later), C++ (cpprest, Qt5, Tizen), Clojure, Dart, Elixir, Go, Groovy, Haskell, Java (Jersey1.x, Jersey2.x, OkHttp, Retrofit1.x, Retrofit2.x, Feign), Node.js (ES5, ES6, AngularJS with Google Closure Compiler annotations) Objective-C, Perl, PHP, Python, Ruby, Scala, Swift (2.x, 3.x), Typescript (Angular1.x, Angular2.x, Fetch, jQuery, Node) ■ Server stubs ● C# (ASP.NET Core, NancyFx), Erlang, Go, Haskell, Java (MSF4J, Spring, Undertow, JAX-RS: CDI, CXF, Inflector, RestEasy), PHP (Lumen, Slim, Silex, Zend Expressive), Python (Flask), NodeJS, Ruby (Sinatra, Rails5), Scala (Finch, Scalatra) ■ API documentation generators: HTML, Confluence Wiki ■ Others: JMeter
21.
Swaggerでできること(3) ● Swagger UI ○
http://swagger.io/swagger-ui/ ○ Swaggerの仕様をサーバー側で実装しておくと、自動でドキュメントが生成される ○ たぶん、もっともよく使う部分 こちらもあとでデモします
22.
ExpressとSwaggerのサンプルを 見てみよう
23.
サンプル使用までの流れ swagger-node https://github.com/swagger-api/swagger-node を使います テンプレートをexpress, hapi, restify,
sailsから選べる $ npm install -g swagger $ swagger project create hello-world
24.
使ってみる(1) まずは、Swagger Editor $ swagger
project edit
25.
使ってみる(2) Swagger UIを試す /app.js を変えていく。まず、ミドルウェアライブラリの読み込み 続いて、appオブジェクトにミドルウェアを指定する サーバの起動
: http://localhost:10010/docs/ $ swagger project start var SwaggerUi = require('swagger-tools/middleware/swagger-ui'); app.use(SwaggerUi(swaggerExpress.runner.swagger));
26.
僕とSwagger
27.
Swagger UIは、様々な言語から利用できる ● Node.jsで開発している人でなくても利用できる ●
既存のアプリケーションに組み込むこともできる ● 一度仕様を作れば、万が一移植することになっても、 ドキュメント面の変更がほとんどない(出力されたものに関しては)
28.
ClojureでのAPI開発に全面的に使用 ● 使い道 :
SPA開発のAPIデザイン & バックエンド開発 ○ フロントエンドとバックエンド同時に作ったり ● compojure-apiというフレームワークでAPIを構築している ● Swaggerと統合されているのでこんなことがかんたんに出来る ○ リクエスト時のJSONの型を定義して実装にもドキュメントにも反映 ○ レスポンス時のJSONの型を定義して実装にもドキュメントにも反映 ○ Swaggerの仕様の基づいているので、実装しているAPIのパラメータ仕様などが そのままドキュメントになる ○ 開発時だけSwaggerを有効にして、本番時は無効にする
29.
サンプルコード : I/O周りの仕様定義 POST時のリクエストの仕様
(一部適当です) POST時のレスポンスの仕様 (一部適当です) (s/defschema RequestPost "POSTのスキーマ" {:data {:type (s/eq “markdown”) :attributes {:markdown s/Any}}}) (s/defschema ResponsePost "POST返り値のスキーマ" {:data {:type (s/eq “markdown”) (s/optional-key :errors) s/Any :attributes {:result s/Any}}})
30.
サンプルコード : APIの実装 (def
kara-d-api (api {:swagger (if (env/dev?) {:ui "/api-docs-markdown" :options {:ui {:validatorUrl nil}} :spec "/swagger-markdown.json" :data {:info {:title "markdown API" :description ""} :tags [{:name "api-markdown", :description ""}]}} nil) :format { ... }}} (context "/api/markdown" [] :tags ["api-markdown"] (POST "/" request :summary "markdown投稿" :body [post RequestPost] :return ResponsePost (if-not (authenticated? request) (bad-request (error/unauthorized config/api-type)) (ok (handler-api/post! post request)))) ... 他のAPI定義 ))) Swaggerの定義メタデータ 各APIの実装
31.
Swaggerいいことまとめ ● Swaggerが統合されたフレームワークであれば、実装コードにSwagger用のメタデー タを付与するだけで、ドキュメントの構築が可能 ○ 使い方は、それぞれのフレームワークのドキュメントを見よう ○
かなりの言語が対応しているはず ● 実装と仕様ドキュメントのずれがなくなる ● リポジトリで一緒に管理できる ● 動作するドキュメントとして、いろいろ試せる ● APIを設計するときに細かな仕様を考えられる ● とりあえず適当なサーバを立ち上げられる
32.
どうですか Swagger!
33.
- END - ありがとうございました 2017/5/12 Okachi.js
vol.5
Download now