SlideShare a Scribd company logo
Copyright (C) 2019 Toranoana Inc. All Rights Reserved.
go + swagger API
2019.1.22 オタクが最新技術を追うライトニングトークイベント2回目
株式会社虎の穴
虎の穴ラボ 上田昌寛
Copyright (C) 2019 Toranoana Inc. All Rights Reserved.
1. go API (Swagger )
2. Swagger API
3. go-swagger
4.
2
• 2017 5
• Fantia
Ruby, JavaScript
Java, Kotlin, Go
3
Copyright (C) 2019 Toranoana Inc. All Rights Reserved.
Go
Web
4
Copyright (C) 2019 Toranoana Inc. All Rights Reserved. 5
Copyright (C) 2019 Toranoana Inc. All Rights Reserved.
Revel ?
Echo ?
goa ?
6
Copyright (C) 2019 Toranoana Inc. All Rights Reserved. 7
Copyright (C) 2019 Toranoana Inc. All Rights Reserved.
…
8
Copyright (C) 2019 Toranoana Inc. All Rights Reserved.
Swagger go
9
Copyright (C) 2019 Toranoana Inc. All Rights Reserved.
Swagger
● RESTful API
● Swagger Editor, Swagger
Codegen
10
Copyright (C) 2019 Toranoana Inc. All Rights Reserved.
Swagger
11
Swagger Spec RESTfull API
YAML JSON
Swagger Editer Swagger Spec
Swagger UI Swagger Spec
HTML
Swagger Codegen Swagger Spec
Swagger Core Swagger Spec
Copyright (C) 2019 Toranoana Inc. All Rights Reserved.
Swagger
12
Swagger Spec API ...
●
●
etc
Swagger Spec
Copyright (C) 2019 Toranoana Inc. All Rights Reserved.
go + Swagger
go-swagger
https://github.com/go-swagger/go-swagger
13
Swagger Spec RESTfull API
YAML JSON
Swagger Editer Swagger Spec
Copyright (C) 2019 Toranoana Inc. All Rights Reserved.
go-swagger
14
API
go-swagger
Copyright (C) 2019 Toranoana Inc. All Rights Reserved.
1. API
2. go-swagger
3. curl
15
Copyright (C) 2019 Toranoana Inc. All Rights Reserved.
Swagger Editor
docker
docker pull swaggerapi/swagger-editor
docker run -d -p 80:8080 swaggerapi/swagger-editor
http://localhost:80/
16
Copyright (C) 2019 Toranoana Inc. All Rights Reserved.
Swagger Editor (2)
YAML
17
Copyright (C) 2019 Toranoana Inc. All Rights Reserved.
18
Copyright (C) 2019 Toranoana Inc. All Rights Reserved.
API
19
Copyright (C) 2019 Toranoana Inc. All Rights Reserved.
go-swagger go
$ swagger generate server -f ./swagger.yml -A swagger-go-sample
20
-f :
-A :
$ go get -u github.com/go-swagger/go-swagger/cmd/swagger
1. go-swagger
2. go-swagger
Copyright (C) 2019 Toranoana Inc. All Rights Reserved.
go-swagger go
21
Copyright (C) 2019 Toranoana Inc. All Rights Reserved.
Handler
22
API
Copyright (C) 2019 Toranoana Inc. All Rights Reserved.
curl
23
$ cd cmd/swagger-go-sample-server
$ go build -o server
$./server
Serving swagger go sample at
http://127.0.0.1:55187
Copyright (C) 2019 Toranoana Inc. All Rights Reserved.
{
“id”: 0,
“name”: ”ueda",
"age": 20
}
curl
24
$ curl -X POST "http://localhost/" -H "accept: application/json" -H "Content-Type:
application/json" -d "{ ¥"name¥": ¥”ueda¥", ¥"age¥": 20}"
Copyright (C) 2019 Toranoana Inc. All Rights Reserved.
[{“id”: 0, “name”: ”ueda“,”age“:20}]
curl
25
$ curl -X GET "http://localhost/?limit=20" -H "accept: application/json"
Copyright (C) 2019 Toranoana Inc. All Rights Reserved.
● Go Web go-swagger
● API
● Swagger
●
26

More Related Content

PDF
マイクロサービスバックエンドAPIのためのRESTとgRPC
PPTX
ドメイン駆動設計とマイクロサービス
PDF
オープンソースのAPIゲートウェイ Kong ご紹介
PDF
Webアプリを並行開発する際のマイグレーション戦略
PPTX
大規模グラフデータ処理
PDF
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
PPTX
論文に関する基礎知識2015
PPTX
Amazon SageMakerでカスタムコンテナを使った学習
マイクロサービスバックエンドAPIのためのRESTとgRPC
ドメイン駆動設計とマイクロサービス
オープンソースのAPIゲートウェイ Kong ご紹介
Webアプリを並行開発する際のマイグレーション戦略
大規模グラフデータ処理
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
論文に関する基礎知識2015
Amazon SageMakerでカスタムコンテナを使った学習

What's hot (20)

PDF
コンセプトから理解するGitコマンド
PDF
Python 3のWebシステムでDDDに入門してみた
PDF
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
PDF
30分でわかるマイクロサービスアーキテクチャ 第2版
PDF
RedmineのFAQとアンチパターン集
PDF
こわくない Git
PPTX
世界一わかりやすいClean Architecture
PDF
オントロジー工学に基づく 知識の体系化と利用
PDF
Raspberry Pi + Go で IoT した話
PDF
マイクロにしすぎた結果がこれだよ!
PDF
Getting started with MLOps
PDF
現場で役立つシステム設計の原則
PPTX
DLLab 異常検知ナイト 資料 20180214
PDF
ドメイン駆動設計入門
PDF
機械学習を用いた仕様書からのテストケース自動生成ツールSpec2Testの試作
PPTX
JAZUG12周年 俺の Azure Cosmos DB
PDF
.NET 7期待の新機能
PDF
君はyarn.lockをコミットしているか?
PDF
研究の基本ツール
PPTX
情報検索のためのユーザモデル
コンセプトから理解するGitコマンド
Python 3のWebシステムでDDDに入門してみた
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
30分でわかるマイクロサービスアーキテクチャ 第2版
RedmineのFAQとアンチパターン集
こわくない Git
世界一わかりやすいClean Architecture
オントロジー工学に基づく 知識の体系化と利用
Raspberry Pi + Go で IoT した話
マイクロにしすぎた結果がこれだよ!
Getting started with MLOps
現場で役立つシステム設計の原則
DLLab 異常検知ナイト 資料 20180214
ドメイン駆動設計入門
機械学習を用いた仕様書からのテストケース自動生成ツールSpec2Testの試作
JAZUG12周年 俺の Azure Cosmos DB
.NET 7期待の新機能
君はyarn.lockをコミットしているか?
研究の基本ツール
情報検索のためのユーザモデル
Ad

Similar to go + swaggerでAPIサーバーを作ってみる (20)

PDF
俺が好きなのは Java だけど Java じゃない〜OSSによる虎の穴通販サイト開発の全貌
PDF
今日から始める全文検索 その2
PDF
今日から始める全文検索
PDF
dubbo-present-and-future.pdf
PDF
devops with dc/os
PPTX
Git Internals
PDF
OSC2019_Tokyo_Spring_スポンサーLT
PPTX
Advanced JavaScript
PDF
AWS SAM でLambda開発
PDF
GAE/Go 選定から活用まで
PDF
The Recent FakeSpy's Activity in Japan
PDF
Kotlinについて
PPTX
swampUP: Over-The-Air (OTA) firmware upgrades for Internet of Things devices ...
PDF
Google Cloud Function + Go
PDF
Googleアシスタントアプリの基本からマルチデバイス対応まで
PDF
You got database in my cloud!
PDF
Spring Cloud Kubernetes - Spencer Gibb
PDF
190910 SHIBUYA synapse
PDF
DevOpsに憧れたAWS初心者が Code3兄弟+Fargateで CI/CD実現したら 社内から賞賛された話
PDF
戦略を立てる機械学習
俺が好きなのは Java だけど Java じゃない〜OSSによる虎の穴通販サイト開発の全貌
今日から始める全文検索 その2
今日から始める全文検索
dubbo-present-and-future.pdf
devops with dc/os
Git Internals
OSC2019_Tokyo_Spring_スポンサーLT
Advanced JavaScript
AWS SAM でLambda開発
GAE/Go 選定から活用まで
The Recent FakeSpy's Activity in Japan
Kotlinについて
swampUP: Over-The-Air (OTA) firmware upgrades for Internet of Things devices ...
Google Cloud Function + Go
Googleアシスタントアプリの基本からマルチデバイス対応まで
You got database in my cloud!
Spring Cloud Kubernetes - Spencer Gibb
190910 SHIBUYA synapse
DevOpsに憧れたAWS初心者が Code3兄弟+Fargateで CI/CD実現したら 社内から賞賛された話
戦略を立てる機械学習
Ad

More from 虎の穴 開発室 (20)

PDF
FizzBuzzで学ぶJavaの進化
PDF
Railsのデバッグ どうやるかを改めて確認する
PDF
虎の穴ラボ エンジニア採用説明資料 .pdf
PDF
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
PDF
toranoana.deno #6 アジェンダ 採用説明
PDF
Deno 向け WEB 開発用のツールを作ったので 紹介します
PDF
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
PDF
GCPの画像認識APIの紹介
PDF
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
PDF
GitHub APIとfreshで遊ぼう
PDF
通販開発部の西田さん「通販開発マネジメントの5ルール」
PDF
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
PDF
セキュリティを強化しよう!CloudArmorの機能解説
PDF
JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
PDF
Amplify Studioを使ってみた
PDF
いいテスト会 (スプリントレビュー) をやろう!
PDF
【Saitama.js】Denoのすすめ
PDF
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
PDF
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
PDF
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
FizzBuzzで学ぶJavaの進化
Railsのデバッグ どうやるかを改めて確認する
虎の穴ラボ エンジニア採用説明資料 .pdf
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
toranoana.deno #6 アジェンダ 採用説明
Deno 向け WEB 開発用のツールを作ったので 紹介します
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
GCPの画像認識APIの紹介
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
GitHub APIとfreshで遊ぼう
通販開発部の西田さん「通販開発マネジメントの5ルール」
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
セキュリティを強化しよう!CloudArmorの機能解説
JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
Amplify Studioを使ってみた
いいテスト会 (スプリントレビュー) をやろう!
【Saitama.js】Denoのすすめ
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント

Recently uploaded (20)

PPTX
Big Data Technologies - Introduction.pptx
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
sap open course for s4hana steps from ECC to s4
PPT
Teaching material agriculture food technology
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
KodekX | Application Modernization Development
PPTX
Spectroscopy.pptx food analysis technology
PPTX
Cloud computing and distributed systems.
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPTX
MYSQL Presentation for SQL database connectivity
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
Big Data Technologies - Introduction.pptx
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Diabetes mellitus diagnosis method based random forest with bat algorithm
sap open course for s4hana steps from ECC to s4
Teaching material agriculture food technology
Per capita expenditure prediction using model stacking based on satellite ima...
KodekX | Application Modernization Development
Spectroscopy.pptx food analysis technology
Cloud computing and distributed systems.
The AUB Centre for AI in Media Proposal.docx
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
The Rise and Fall of 3GPP – Time for a Sabbatical?
MYSQL Presentation for SQL database connectivity
20250228 LYD VKU AI Blended-Learning.pptx
Encapsulation_ Review paper, used for researhc scholars
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Reach Out and Touch Someone: Haptics and Empathic Computing
Mobile App Security Testing_ A Comprehensive Guide.pdf

go + swaggerでAPIサーバーを作ってみる

  • 1. Copyright (C) 2019 Toranoana Inc. All Rights Reserved. go + swagger API 2019.1.22 オタクが最新技術を追うライトニングトークイベント2回目 株式会社虎の穴 虎の穴ラボ 上田昌寛
  • 2. Copyright (C) 2019 Toranoana Inc. All Rights Reserved. 1. go API (Swagger ) 2. Swagger API 3. go-swagger 4. 2
  • 3. • 2017 5 • Fantia Ruby, JavaScript Java, Kotlin, Go 3
  • 4. Copyright (C) 2019 Toranoana Inc. All Rights Reserved. Go Web 4
  • 5. Copyright (C) 2019 Toranoana Inc. All Rights Reserved. 5
  • 6. Copyright (C) 2019 Toranoana Inc. All Rights Reserved. Revel ? Echo ? goa ? 6
  • 7. Copyright (C) 2019 Toranoana Inc. All Rights Reserved. 7
  • 8. Copyright (C) 2019 Toranoana Inc. All Rights Reserved. … 8
  • 9. Copyright (C) 2019 Toranoana Inc. All Rights Reserved. Swagger go 9
  • 10. Copyright (C) 2019 Toranoana Inc. All Rights Reserved. Swagger ● RESTful API ● Swagger Editor, Swagger Codegen 10
  • 11. Copyright (C) 2019 Toranoana Inc. All Rights Reserved. Swagger 11 Swagger Spec RESTfull API YAML JSON Swagger Editer Swagger Spec Swagger UI Swagger Spec HTML Swagger Codegen Swagger Spec Swagger Core Swagger Spec
  • 12. Copyright (C) 2019 Toranoana Inc. All Rights Reserved. Swagger 12 Swagger Spec API ... ● ● etc Swagger Spec
  • 13. Copyright (C) 2019 Toranoana Inc. All Rights Reserved. go + Swagger go-swagger https://github.com/go-swagger/go-swagger 13 Swagger Spec RESTfull API YAML JSON Swagger Editer Swagger Spec
  • 14. Copyright (C) 2019 Toranoana Inc. All Rights Reserved. go-swagger 14 API go-swagger
  • 15. Copyright (C) 2019 Toranoana Inc. All Rights Reserved. 1. API 2. go-swagger 3. curl 15
  • 16. Copyright (C) 2019 Toranoana Inc. All Rights Reserved. Swagger Editor docker docker pull swaggerapi/swagger-editor docker run -d -p 80:8080 swaggerapi/swagger-editor http://localhost:80/ 16
  • 17. Copyright (C) 2019 Toranoana Inc. All Rights Reserved. Swagger Editor (2) YAML 17
  • 18. Copyright (C) 2019 Toranoana Inc. All Rights Reserved. 18
  • 19. Copyright (C) 2019 Toranoana Inc. All Rights Reserved. API 19
  • 20. Copyright (C) 2019 Toranoana Inc. All Rights Reserved. go-swagger go $ swagger generate server -f ./swagger.yml -A swagger-go-sample 20 -f : -A : $ go get -u github.com/go-swagger/go-swagger/cmd/swagger 1. go-swagger 2. go-swagger
  • 21. Copyright (C) 2019 Toranoana Inc. All Rights Reserved. go-swagger go 21
  • 22. Copyright (C) 2019 Toranoana Inc. All Rights Reserved. Handler 22 API
  • 23. Copyright (C) 2019 Toranoana Inc. All Rights Reserved. curl 23 $ cd cmd/swagger-go-sample-server $ go build -o server $./server Serving swagger go sample at http://127.0.0.1:55187
  • 24. Copyright (C) 2019 Toranoana Inc. All Rights Reserved. { “id”: 0, “name”: ”ueda", "age": 20 } curl 24 $ curl -X POST "http://localhost/" -H "accept: application/json" -H "Content-Type: application/json" -d "{ ¥"name¥": ¥”ueda¥", ¥"age¥": 20}"
  • 25. Copyright (C) 2019 Toranoana Inc. All Rights Reserved. [{“id”: 0, “name”: ”ueda“,”age“:20}] curl 25 $ curl -X GET "http://localhost/?limit=20" -H "accept: application/json"
  • 26. Copyright (C) 2019 Toranoana Inc. All Rights Reserved. ● Go Web go-swagger ● API ● Swagger ● 26