SlideShare a Scribd company logo
1 of 18
Swagger
介紹
●
用 JSON/YAML 描述 API 規格
●
提供線上編輯器
●
大部分的編輯器 / 開發環境都有輔助的 Plugin 支援
●
生器可以 生出各種語言的產 產 client library 以及
server stub 。
●
生器可以 生出漂亮的文件。產 產
CLI
●
除了可以用編輯器 生程式,也可以下指令產
● wget http://repo1.maven.org/maven2/io/swagger/swagger-codegen-
cli/2.2.0/swagger-codegen-cli-2.2.0.jar -O swagger-codegen-cli.jar
● photo_sharing.json 是編寫好的 swagger json 案檔
●
生給產 android 用的 library: java -jar swagger-codegen-cli.jar generate -l android -i
photo_sharing.json -o photo_sharing_android_client_lib
●
生產 angular2 用的 library: java -jar swagger-codegen-cli.jar generate -l
typescript-angular2 -i photo_sharing.json -o photo_sharing_angular_client_lib
●
生產 HTML 文件: java -jar swagger-codegen-cli.jar generate -l html -i
photo_sharing.json -o photo_sharing_html
django
●
與 django 結合應該 是跟說 django rest framework 結合
●
文件: https://django-rest-swagger.readthedocs.io/en/latest/
●
安裝:
– pip install django-rest-swagger
– settings.py 裡的 INSTALLED_APPS 加上 'rest_framework_swagger'
– urls.py 加入 get_swagger_view 的相關程式
●
注意事項
– django-rest-swagger 是根據 django rest framework
產生 swagger 的介面與 json/yaml ,而不是從
json/yaml 產生出 server stub 程式
– swagger 產生器沒有 django 的產生器 :(
怎麼寫 - JSON
●
基本架構: info 與 paths
{
"swagger": "2.0",
"info": {
"description": "",
"version": "1.0.0",
"title": "API prototype",
"contact": {
"email": "anonymous@gmail.com"
},
"license": {
"name": "Apache 2.0",
"url": "http://www.apache.org/licenses/LICENSE-2.0.html"
}
},
"paths": {
}
}
怎麼寫 - JSON
●
paths 是一個 dictionary , key 表示 path , value 裡則描述
method 。 method 裡再描述參數等資訊。{
"/pet": {
"get": {
"tags": ["pet"],
"summary": "Get pets to the store",
"description": "",
"operationId": "getPets",
"parameters": [],
"responses": {
"405": {
"description": "Invalid input"
}
}
}
}
}
怎麼寫 - YAML
●
基本架構: info 與 paths
---
swagger: "2.0"
info:
description: ""
version: "0.0.1"
title: "Example"
contact:
email: "anonymous@gmail.com"
license:
name: "Apache 2.0"
url: "http://www.apache.org/licenses/LICENSE-2.0.html"
paths: {}
怎麼寫 - YAML
●
跟 JSON 一樣, paths 是 dictionary, value 裡則描述 method; method 裡再描述其他
資訊
/pet:
post:
tags:
- "pet"
summary: "Add a new pet to the store"
description: ""
operationId: "addPet"
consumes:
- "application/json"
- "application/xml"
parameters: []
responses:
405:
description: "Invalid input"
swagger 規格定義
● http://swagger.io/specification/
Q&A

More Related Content

What's hot

Bluemix API Services Comparison
Bluemix API Services Comparison Bluemix API Services Comparison
Bluemix API Services Comparison Chang-Yen Huang
 
Rancher 快速打造叢集的解決方案
Rancher 快速打造叢集的解決方案Rancher 快速打造叢集的解決方案
Rancher 快速打造叢集的解決方案Miles Chou
 
极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)Will Huang
 
美团点评技术沙龙06 - 提高移动端兼容性测试效率工具
美团点评技术沙龙06 - 提高移动端兼容性测试效率工具美团点评技术沙龙06 - 提高移动端兼容性测试效率工具
美团点评技术沙龙06 - 提高移动端兼容性测试效率工具美团点评技术团队
 
Git&Github Tutorial
Git&Github TutorialGit&Github Tutorial
Git&Github TutorialTing Wen Su
 
Android gradle 从入门到gg 3
Android gradle 从入门到gg 3Android gradle 从入门到gg 3
Android gradle 从入门到gg 3Jun Liu
 
GitHub Action Introduction
GitHub Action IntroductionGitHub Action Introduction
GitHub Action IntroductionDuran Hsieh
 
Android gradle 从入门到gg 0
Android gradle 从入门到gg 0Android gradle 从入门到gg 0
Android gradle 从入门到gg 0Jun Liu
 
向jquery学习
向jquery学习向jquery学习
向jquery学习jay li
 
Android gradle 从入门到gg 2
Android gradle 从入门到gg 2Android gradle 从入门到gg 2
Android gradle 从入门到gg 2Jun Liu
 
Android gradle 从入门到gg 1
Android gradle 从入门到gg 1Android gradle 从入门到gg 1
Android gradle 从入门到gg 1Jun Liu
 
互联网持续交付整形记
互联网持续交付整形记互联网持续交付整形记
互联网持续交付整形记Ryan YU
 
Gradle 和 Android Studio --- Jason Ko
Gradle 和 Android Studio --- Jason KoGradle 和 Android Studio --- Jason Ko
Gradle 和 Android Studio --- Jason Ko力中 柯
 
从CI到CD[麻袋理财王天青]v1
从CI到CD[麻袋理财王天青]v1从CI到CD[麻袋理财王天青]v1
从CI到CD[麻袋理财王天青]v1天青 王
 
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)Will Huang
 
Flutter 踩雷心得
Flutter 踩雷心得Flutter 踩雷心得
Flutter 踩雷心得Weizhong Yang
 
給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發Weizhong Yang
 
API Token 入門
API Token 入門API Token 入門
API Token 入門Andrew Wu
 

What's hot (20)

Bluemix API Services Comparison
Bluemix API Services Comparison Bluemix API Services Comparison
Bluemix API Services Comparison
 
Rancher 快速打造叢集的解決方案
Rancher 快速打造叢集的解決方案Rancher 快速打造叢集的解決方案
Rancher 快速打造叢集的解決方案
 
极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)
 
美团点评技术沙龙06 - 提高移动端兼容性测试效率工具
美团点评技术沙龙06 - 提高移动端兼容性测试效率工具美团点评技术沙龙06 - 提高移动端兼容性测试效率工具
美团点评技术沙龙06 - 提高移动端兼容性测试效率工具
 
Git&Github Tutorial
Git&Github TutorialGit&Github Tutorial
Git&Github Tutorial
 
Bluemix Api Connect
Bluemix Api ConnectBluemix Api Connect
Bluemix Api Connect
 
Android gradle 从入门到gg 3
Android gradle 从入门到gg 3Android gradle 从入门到gg 3
Android gradle 从入门到gg 3
 
GitHub Action Introduction
GitHub Action IntroductionGitHub Action Introduction
GitHub Action Introduction
 
Android gradle 从入门到gg 0
Android gradle 从入门到gg 0Android gradle 从入门到gg 0
Android gradle 从入门到gg 0
 
向jquery学习
向jquery学习向jquery学习
向jquery学习
 
Android gradle 从入门到gg 2
Android gradle 从入门到gg 2Android gradle 从入门到gg 2
Android gradle 从入门到gg 2
 
Android gradle 从入门到gg 1
Android gradle 从入门到gg 1Android gradle 从入门到gg 1
Android gradle 从入门到gg 1
 
互联网持续交付整形记
互联网持续交付整形记互联网持续交付整形记
互联网持续交付整形记
 
Gradle 和 Android Studio --- Jason Ko
Gradle 和 Android Studio --- Jason KoGradle 和 Android Studio --- Jason Ko
Gradle 和 Android Studio --- Jason Ko
 
从CI到CD[麻袋理财王天青]v1
从CI到CD[麻袋理财王天青]v1从CI到CD[麻袋理财王天青]v1
从CI到CD[麻袋理财王天青]v1
 
Github Actions
Github ActionsGithub Actions
Github Actions
 
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
 
Flutter 踩雷心得
Flutter 踩雷心得Flutter 踩雷心得
Flutter 踩雷心得
 
給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發
 
API Token 入門
API Token 入門API Token 入門
API Token 入門
 

Similar to Swagger

Clojure cnclojure-meetup
Clojure cnclojure-meetupClojure cnclojure-meetup
Clojure cnclojure-meetupsunng87
 
2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swttka
 
Angular 4 網站開發最佳實務 (Modern Web 2017)
Angular 4 網站開發最佳實務 (Modern Web 2017)Angular 4 網站開發最佳實務 (Modern Web 2017)
Angular 4 網站開發最佳實務 (Modern Web 2017)Will Huang
 
Scaling Offline Database Usage On GCP @ Dcard
Scaling Offline Database Usage On GCP @ DcardScaling Offline Database Usage On GCP @ Dcard
Scaling Offline Database Usage On GCP @ DcardJui An Huang (黃瑞安)
 
如何與全世界分享你的 Library
如何與全世界分享你的 Library如何與全世界分享你的 Library
如何與全世界分享你的 LibraryMu Chun Wang
 
Continuous Delivery: automated testing, continuous integration and continuous...
Continuous Delivery: automated testing, continuous integration and continuous...Continuous Delivery: automated testing, continuous integration and continuous...
Continuous Delivery: automated testing, continuous integration and continuous...Jimmy Lai
 
快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架Will Huang
 
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)FLASH开发者交流会
 
從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用謝 宗穎
 
Java 1(Java概述)
Java 1(Java概述)Java 1(Java概述)
Java 1(Java概述)xzdbd
 
美团点评技术沙龙05 - 前后端联调方案探索与应用
美团点评技术沙龙05 - 前后端联调方案探索与应用美团点评技术沙龙05 - 前后端联调方案探索与应用
美团点评技术沙龙05 - 前后端联调方案探索与应用美团点评技术团队
 
钱宝坤:多浏览器集成的JavaScript单元测试工具
钱宝坤:多浏览器集成的JavaScript单元测试工具钱宝坤:多浏览器集成的JavaScript单元测试工具
钱宝坤:多浏览器集成的JavaScript单元测试工具taobao.com
 
使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡cachowu
 
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例Will Huang
 
用 Drone 打造 輕量級容器持續交付平台
用 Drone 打造輕量級容器持續交付平台用 Drone 打造輕量級容器持續交付平台
用 Drone 打造 輕量級容器持續交付平台Bo-Yi Wu
 
ASP.NET Core 3.0 新功能
ASP.NET Core 3.0 新功能ASP.NET Core 3.0 新功能
ASP.NET Core 3.0 新功能Edward Kuo
 
Vic weekly learning_20160504
Vic weekly learning_20160504Vic weekly learning_20160504
Vic weekly learning_20160504LearningTech
 
Ops as Code using Serverless
Ops as Code using Serverless Ops as Code using Serverless
Ops as Code using Serverless Rick Hwang
 

Similar to Swagger (20)

Clojure cnclojure-meetup
Clojure cnclojure-meetupClojure cnclojure-meetup
Clojure cnclojure-meetup
 
2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt
 
Angular 4 網站開發最佳實務 (Modern Web 2017)
Angular 4 網站開發最佳實務 (Modern Web 2017)Angular 4 網站開發最佳實務 (Modern Web 2017)
Angular 4 網站開發最佳實務 (Modern Web 2017)
 
Scaling Offline Database Usage On GCP @ Dcard
Scaling Offline Database Usage On GCP @ DcardScaling Offline Database Usage On GCP @ Dcard
Scaling Offline Database Usage On GCP @ Dcard
 
如何與全世界分享你的 Library
如何與全世界分享你的 Library如何與全世界分享你的 Library
如何與全世界分享你的 Library
 
Continuous Delivery: automated testing, continuous integration and continuous...
Continuous Delivery: automated testing, continuous integration and continuous...Continuous Delivery: automated testing, continuous integration and continuous...
Continuous Delivery: automated testing, continuous integration and continuous...
 
Swing
SwingSwing
Swing
 
快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架
 
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
 
從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用
 
Java 1(Java概述)
Java 1(Java概述)Java 1(Java概述)
Java 1(Java概述)
 
Html5
Html5Html5
Html5
 
美团点评技术沙龙05 - 前后端联调方案探索与应用
美团点评技术沙龙05 - 前后端联调方案探索与应用美团点评技术沙龙05 - 前后端联调方案探索与应用
美团点评技术沙龙05 - 前后端联调方案探索与应用
 
钱宝坤:多浏览器集成的JavaScript单元测试工具
钱宝坤:多浏览器集成的JavaScript单元测试工具钱宝坤:多浏览器集成的JavaScript单元测试工具
钱宝坤:多浏览器集成的JavaScript单元测试工具
 
使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡
 
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
 
用 Drone 打造 輕量級容器持續交付平台
用 Drone 打造輕量級容器持續交付平台用 Drone 打造輕量級容器持續交付平台
用 Drone 打造 輕量級容器持續交付平台
 
ASP.NET Core 3.0 新功能
ASP.NET Core 3.0 新功能ASP.NET Core 3.0 新功能
ASP.NET Core 3.0 新功能
 
Vic weekly learning_20160504
Vic weekly learning_20160504Vic weekly learning_20160504
Vic weekly learning_20160504
 
Ops as Code using Serverless
Ops as Code using Serverless Ops as Code using Serverless
Ops as Code using Serverless
 

Swagger

  • 2. 介紹 ● 用 JSON/YAML 描述 API 規格 ● 提供線上編輯器 ● 大部分的編輯器 / 開發環境都有輔助的 Plugin 支援 ● 生器可以 生出各種語言的產 產 client library 以及 server stub 。 ● 生器可以 生出漂亮的文件。產 產
  • 3.
  • 4.
  • 5.
  • 6.
  • 7. CLI ● 除了可以用編輯器 生程式,也可以下指令產 ● wget http://repo1.maven.org/maven2/io/swagger/swagger-codegen- cli/2.2.0/swagger-codegen-cli-2.2.0.jar -O swagger-codegen-cli.jar ● photo_sharing.json 是編寫好的 swagger json 案檔 ● 生給產 android 用的 library: java -jar swagger-codegen-cli.jar generate -l android -i photo_sharing.json -o photo_sharing_android_client_lib ● 生產 angular2 用的 library: java -jar swagger-codegen-cli.jar generate -l typescript-angular2 -i photo_sharing.json -o photo_sharing_angular_client_lib ● 生產 HTML 文件: java -jar swagger-codegen-cli.jar generate -l html -i photo_sharing.json -o photo_sharing_html
  • 8. django ● 與 django 結合應該 是跟說 django rest framework 結合 ● 文件: https://django-rest-swagger.readthedocs.io/en/latest/ ● 安裝: – pip install django-rest-swagger – settings.py 裡的 INSTALLED_APPS 加上 'rest_framework_swagger' – urls.py 加入 get_swagger_view 的相關程式
  • 9.
  • 10.
  • 11.
  • 12. ● 注意事項 – django-rest-swagger 是根據 django rest framework 產生 swagger 的介面與 json/yaml ,而不是從 json/yaml 產生出 server stub 程式 – swagger 產生器沒有 django 的產生器 :(
  • 13. 怎麼寫 - JSON ● 基本架構: info 與 paths { "swagger": "2.0", "info": { "description": "", "version": "1.0.0", "title": "API prototype", "contact": { "email": "anonymous@gmail.com" }, "license": { "name": "Apache 2.0", "url": "http://www.apache.org/licenses/LICENSE-2.0.html" } }, "paths": { } }
  • 14. 怎麼寫 - JSON ● paths 是一個 dictionary , key 表示 path , value 裡則描述 method 。 method 裡再描述參數等資訊。{ "/pet": { "get": { "tags": ["pet"], "summary": "Get pets to the store", "description": "", "operationId": "getPets", "parameters": [], "responses": { "405": { "description": "Invalid input" } } } } }
  • 15. 怎麼寫 - YAML ● 基本架構: info 與 paths --- swagger: "2.0" info: description: "" version: "0.0.1" title: "Example" contact: email: "anonymous@gmail.com" license: name: "Apache 2.0" url: "http://www.apache.org/licenses/LICENSE-2.0.html" paths: {}
  • 16. 怎麼寫 - YAML ● 跟 JSON 一樣, paths 是 dictionary, value 裡則描述 method; method 裡再描述其他 資訊 /pet: post: tags: - "pet" summary: "Add a new pet to the store" description: "" operationId: "addPet" consumes: - "application/json" - "application/xml" parameters: [] responses: 405: description: "Invalid input"
  • 18. Q&A