Submit Search
Upload
Api設計
•
11 likes
•
4,885 views
Yuto Suzuki
Follow
オライリーのWebAPIを参考にAPIの設計に関するスライドを作りました。
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 28
Download now
Download to read offline
Recommended
Web API: The Good Parts 落穂ひろい
Web API: The Good Parts 落穂ひろい
API Meetup
脱RESTful API設計の提案
脱RESTful API設計の提案
樽八 仲川
REST API のコツ
REST API のコツ
pospome
スマホアプリ開発者のためのWeb api開発入門の入門
スマホアプリ開発者のためのWeb api開発入門の入門
Kenyu Miura
Cognitive serviceのすゝめ
Cognitive serviceのすゝめ
Tsubasa Yoshino
React way at_eight
React way at_eight
Hideharu Okuma
PHP実践 ~外部APIを使って情報を取得する~
PHP実践 ~外部APIを使って情報を取得する~
schoowebcampus
PowerShellでFunction Appしよう!
PowerShellでFunction Appしよう!
Tsubasa Yoshino
Recommended
Web API: The Good Parts 落穂ひろい
Web API: The Good Parts 落穂ひろい
API Meetup
脱RESTful API設計の提案
脱RESTful API設計の提案
樽八 仲川
REST API のコツ
REST API のコツ
pospome
スマホアプリ開発者のためのWeb api開発入門の入門
スマホアプリ開発者のためのWeb api開発入門の入門
Kenyu Miura
Cognitive serviceのすゝめ
Cognitive serviceのすゝめ
Tsubasa Yoshino
React way at_eight
React way at_eight
Hideharu Okuma
PHP実践 ~外部APIを使って情報を取得する~
PHP実践 ~外部APIを使って情報を取得する~
schoowebcampus
PowerShellでFunction Appしよう!
PowerShellでFunction Appしよう!
Tsubasa Yoshino
我が家のフロントエンド開発事情
我が家のフロントエンド開発事情
Naoki Yamada
smartFXにおけるApache Cordovaの活用について
smartFXにおけるApache Cordovaの活用について
剛志 森田
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向
Tsutomu Ogasawara
デザイナさんにGithubでpr投げてもらうまで
デザイナさんにGithubでpr投げてもらうまで
Hideharu Okuma
Speech API の概要(Microsoft Cognitive Services)
Speech API の概要(Microsoft Cognitive Services)
Atsushi Yokohama (BEACHSIDE)
ACI Stateful APP 作ってみた
ACI Stateful APP 作ってみた
yushimaz
~新しい着回しと出会おう~ 『XZ(クローゼット)』 を支える技術 -Cordova編-
~新しい着回しと出会おう~ 『XZ(クローゼット)』 を支える技術 -Cordova編-
Shinichiro Yoshida
無料で始めるアプリのバックエンド開発
無料で始めるアプリのバックエンド開発
Shoichi Takagi
スキスキIonic
スキスキIonic
Kon Yuichi
エンジニアのための勉強会 #3 『RESTful API』
エンジニアのための勉強会 #3 『RESTful API』
Naoki Yoshitake
爆速フレームワークでREST APIを作った話
爆速フレームワークでREST APIを作った話
Shohei Tai
WebAPIのこれまでとこれから
WebAPIのこれまでとこれから
Yohei Yamamoto
Build 2017 更新情報 Cognitive Services 編
Build 2017 更新情報 Cognitive Services 編
Atsushi Yokohama (BEACHSIDE)
Vtecxlt20151201
Vtecxlt20151201
Shinichiro Takezaki
Onsen UIが目指すもの
Onsen UIが目指すもの
アシアル株式会社
Onsen UI 2.0とUIライブラリの未来
Onsen UI 2.0とUIライブラリの未来
アシアル株式会社
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナー
Imamura Masayuki
iQONを支えるクローラーの裏側
iQONを支えるクローラーの裏側
Takehiro Shiozaki
WordPress APIで作るモバイルアプリ
WordPress APIで作るモバイルアプリ
アシアル株式会社
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
CData Software Japan
WebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWeb
Kensaku Komatsu
オープンデータ Web API
オープンデータ Web API
Hironori Sakamoto
More Related Content
What's hot
我が家のフロントエンド開発事情
我が家のフロントエンド開発事情
Naoki Yamada
smartFXにおけるApache Cordovaの活用について
smartFXにおけるApache Cordovaの活用について
剛志 森田
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向
Tsutomu Ogasawara
デザイナさんにGithubでpr投げてもらうまで
デザイナさんにGithubでpr投げてもらうまで
Hideharu Okuma
Speech API の概要(Microsoft Cognitive Services)
Speech API の概要(Microsoft Cognitive Services)
Atsushi Yokohama (BEACHSIDE)
ACI Stateful APP 作ってみた
ACI Stateful APP 作ってみた
yushimaz
~新しい着回しと出会おう~ 『XZ(クローゼット)』 を支える技術 -Cordova編-
~新しい着回しと出会おう~ 『XZ(クローゼット)』 を支える技術 -Cordova編-
Shinichiro Yoshida
無料で始めるアプリのバックエンド開発
無料で始めるアプリのバックエンド開発
Shoichi Takagi
スキスキIonic
スキスキIonic
Kon Yuichi
エンジニアのための勉強会 #3 『RESTful API』
エンジニアのための勉強会 #3 『RESTful API』
Naoki Yoshitake
爆速フレームワークでREST APIを作った話
爆速フレームワークでREST APIを作った話
Shohei Tai
WebAPIのこれまでとこれから
WebAPIのこれまでとこれから
Yohei Yamamoto
Build 2017 更新情報 Cognitive Services 編
Build 2017 更新情報 Cognitive Services 編
Atsushi Yokohama (BEACHSIDE)
Vtecxlt20151201
Vtecxlt20151201
Shinichiro Takezaki
Onsen UIが目指すもの
Onsen UIが目指すもの
アシアル株式会社
Onsen UI 2.0とUIライブラリの未来
Onsen UI 2.0とUIライブラリの未来
アシアル株式会社
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナー
Imamura Masayuki
iQONを支えるクローラーの裏側
iQONを支えるクローラーの裏側
Takehiro Shiozaki
WordPress APIで作るモバイルアプリ
WordPress APIで作るモバイルアプリ
アシアル株式会社
What's hot
(19)
我が家のフロントエンド開発事情
我が家のフロントエンド開発事情
smartFXにおけるApache Cordovaの活用について
smartFXにおけるApache Cordovaの活用について
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向
デザイナさんにGithubでpr投げてもらうまで
デザイナさんにGithubでpr投げてもらうまで
Speech API の概要(Microsoft Cognitive Services)
Speech API の概要(Microsoft Cognitive Services)
ACI Stateful APP 作ってみた
ACI Stateful APP 作ってみた
~新しい着回しと出会おう~ 『XZ(クローゼット)』 を支える技術 -Cordova編-
~新しい着回しと出会おう~ 『XZ(クローゼット)』 を支える技術 -Cordova編-
無料で始めるアプリのバックエンド開発
無料で始めるアプリのバックエンド開発
スキスキIonic
スキスキIonic
エンジニアのための勉強会 #3 『RESTful API』
エンジニアのための勉強会 #3 『RESTful API』
爆速フレームワークでREST APIを作った話
爆速フレームワークでREST APIを作った話
WebAPIのこれまでとこれから
WebAPIのこれまでとこれから
Build 2017 更新情報 Cognitive Services 編
Build 2017 更新情報 Cognitive Services 編
Vtecxlt20151201
Vtecxlt20151201
Onsen UIが目指すもの
Onsen UIが目指すもの
Onsen UI 2.0とUIライブラリの未来
Onsen UI 2.0とUIライブラリの未来
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナー
iQONを支えるクローラーの裏側
iQONを支えるクローラーの裏側
WordPress APIで作るモバイルアプリ
WordPress APIで作るモバイルアプリ
Similar to Api設計
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
CData Software Japan
WebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWeb
Kensaku Komatsu
オープンデータ Web API
オープンデータ Web API
Hironori Sakamoto
Whats ACI API?
Whats ACI API?
Takao Setaka
devsami kansai 2012 #c2
devsami kansai 2012 #c2
Yushi_Takagi
20170705 apiをつくろう
20170705 apiをつくろう
CData Software Japan
2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門
Asami Abe
#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ
#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ
Kazuya Sugimoto
APICのREST API入門
APICのREST API入門
Takehiro Yokoishi
20120413 nestakabaneworkshop
20120413 nestakabaneworkshop
Yoichiro Sakurai
Web API を気軽に使えるツールやサービスのご紹介
Web API を気軽に使えるツールやサービスのご紹介
CData Software Japan
20170420 infoteria apiセミナーupload
20170420 infoteria apiセミナーupload
CData Software Japan
Api as a product
Api as a product
CData Software Japan
APIとは
APIとは
moonfactory Inc.
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
Koichiro Sumi
Tableau Developers Club - Web Data Connector handson
Tableau Developers Club - Web Data Connector handson
Kenji Noguchi
Adwords Api Developer Guide Summary
Adwords Api Developer Guide Summary
Toshiyuki Maeda
AppPotモバイルアプリ開発『内製化』
AppPotモバイルアプリ開発『内製化』
Ryohei Sogo
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 spring
kounan13
【2018/09/11】PAYでのReact Nativeにおける APIクライアント実装 について
【2018/09/11】PAYでのReact Nativeにおける APIクライアント実装 について
Natsuki Yamanaka
Similar to Api設計
(20)
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
WebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWeb
オープンデータ Web API
オープンデータ Web API
Whats ACI API?
Whats ACI API?
devsami kansai 2012 #c2
devsami kansai 2012 #c2
20170705 apiをつくろう
20170705 apiをつくろう
2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門
#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ
#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ
APICのREST API入門
APICのREST API入門
20120413 nestakabaneworkshop
20120413 nestakabaneworkshop
Web API を気軽に使えるツールやサービスのご紹介
Web API を気軽に使えるツールやサービスのご紹介
20170420 infoteria apiセミナーupload
20170420 infoteria apiセミナーupload
Api as a product
Api as a product
APIとは
APIとは
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
Tableau Developers Club - Web Data Connector handson
Tableau Developers Club - Web Data Connector handson
Adwords Api Developer Guide Summary
Adwords Api Developer Guide Summary
AppPotモバイルアプリ開発『内製化』
AppPotモバイルアプリ開発『内製化』
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 spring
【2018/09/11】PAYでのReact Nativeにおける APIクライアント実装 について
【2018/09/11】PAYでのReact Nativeにおける APIクライアント実装 について
More from Yuto Suzuki
5xx解消への道のり
5xx解消への道のり
Yuto Suzuki
MySQLのインデックス入門
MySQLのインデックス入門
Yuto Suzuki
Ad vol.2
Ad vol.2
Yuto Suzuki
広告勉強会
広告勉強会
Yuto Suzuki
Mastering Bitcoin ~network~
Mastering Bitcoin ~network~
Yuto Suzuki
Aerospike基本のき
Aerospike基本のき
Yuto Suzuki
いまさらAkkaStream
いまさらAkkaStream
Yuto Suzuki
Introduction of View Through Tracking
Introduction of View Through Tracking
Yuto Suzuki
エンジニアのためのマーケティング
エンジニアのためのマーケティング
Yuto Suzuki
How to Build a Team
How to Build a Team
Yuto Suzuki
プロダクトにおけるScala
プロダクトにおけるScala
Yuto Suzuki
Do you like scala
Do you like scala
Yuto Suzuki
Re invent
Re invent
Yuto Suzuki
Slackから始めるChatOps
Slackから始めるChatOps
Yuto Suzuki
大学の時の研究の話
大学の時の研究の話
Yuto Suzuki
F.O.Xを支える技術
F.O.Xを支える技術
Yuto Suzuki
Scala戦士を増やせ
Scala戦士を増やせ
Yuto Suzuki
Recommend scala
Recommend scala
Yuto Suzuki
スクラムに学ぶ開発の回し方
スクラムに学ぶ開発の回し方
Yuto Suzuki
Breezeで始めるデータ分析
Breezeで始めるデータ分析
Yuto Suzuki
More from Yuto Suzuki
(20)
5xx解消への道のり
5xx解消への道のり
MySQLのインデックス入門
MySQLのインデックス入門
Ad vol.2
Ad vol.2
広告勉強会
広告勉強会
Mastering Bitcoin ~network~
Mastering Bitcoin ~network~
Aerospike基本のき
Aerospike基本のき
いまさらAkkaStream
いまさらAkkaStream
Introduction of View Through Tracking
Introduction of View Through Tracking
エンジニアのためのマーケティング
エンジニアのためのマーケティング
How to Build a Team
How to Build a Team
プロダクトにおけるScala
プロダクトにおけるScala
Do you like scala
Do you like scala
Re invent
Re invent
Slackから始めるChatOps
Slackから始めるChatOps
大学の時の研究の話
大学の時の研究の話
F.O.Xを支える技術
F.O.Xを支える技術
Scala戦士を増やせ
Scala戦士を増やせ
Recommend scala
Recommend scala
スクラムに学ぶ開発の回し方
スクラムに学ぶ開発の回し方
Breezeで始めるデータ分析
Breezeで始めるデータ分析
Api設計
1.
APIの設計ってどうやるの? 鈴木 雄登
2.
APIの種類
3.
• よく使われるAPIの利用目的 – 公開しているWebサービスへのアクセス用API –
他のページに貼り付けるウィジェット – AJAXを駆使したページ用のAPI – スマホアプリ用のAPI – ソシャゲ用のAPI – 社内システムとの連携API
4.
こんなサービスも Programmable Web
5.
こんなサービスも Programmable Web
6.
でもAPIの設計って あんまり解説してない
7.
アジェンダ • APIの設計を始める前に • エンドポイントの設計 •
レスポンスデータの設計
8.
APIの設計を始める前に
9.
設計に入る前に決めるべきこと • 何をAPIで公開するのか? – 全データのAPIを作るのか? –
全てのAPIを作るのは、時間がかかるが、ユーザ も増え思いがけないメリットも見つかる • 誰を対象にしたAPIか? – ユーザを想定しなければ、使いやすいAPIというも のは作れない
10.
設計に入る前に決めるべきこと • 何をAPIで公開するのか? – 全データのAPIを作るのか? –
全てのAPIを作るのは、時間がかかるが、ユーザ も増え思いがけないメリットも見つかる • 誰を対象にしたAPIか? – ユーザを想定しなければ、使いやすいAPIというも のは作れない
11.
アプリケーションを作るのと同じで、 誰に向けた設計かを意識するだけで、 使いやすさは全然変わってくる
12.
エンドポイントの設計
13.
エンドポイントって? http://api.example.com/users APIにアクセスするためのURI エンドポイント = ユーザが一番見る情報 →
覚えやすくどんな機能を持つURIなのか ひと目でわかるものに
14.
エンドポイント設計時の6箇条 1. 短く入力しやすいURI 2. 人間が読んでも理解できるURI 3.
大文字小文字が混在していないURI 4. HackableなURI 5. サーバ側のアーキテクチャによらないURI 6. ルールが統一されたURI
15.
HackableなURIを目指す • Hackable =
ハックしやすい – 修正することで別のURIにするのが容易なもの http://api.example.com/v1/items/1234 アイテム アイテムID
16.
サーバの構造は関係ない! http://api.example.com/v1/items.php http://api.example.com/v1/cgi-bin/items.php
17.
ルールは統一しよう http://api.example.com/v1/items http://api.example.com/v1/item?id=12 http://api.example.com/v1/items/12?status=1 複数形が混ざっていたり、URLのパスが統一されてないものは、 ユーザが混乱してしまう
18.
細かい注意点 • 単語の注意点 – 複数形の名詞にする –
利用する英語に気をつける – エンコード文字列は使わない – 単語のつなぎはハイフン
19.
メソッド • GET – 基本的にサーバのリソースを変更させない •
POST – 新しいリソースの送信(新規登録) • PUT – URIで指定し、リソースを全更新 • DELETE – 削除 • PATCH – 指定した一部のリソースのみ更新
20.
レスポンスデータの設計
21.
レスポンス設計時の注意点 • ChattyなAPIを作らない • データはフラットのほうがいいのか •
配列で返すかオブジェクトで返すか • レスポンスのケース • エラーレスポンス
22.
ChattyなAPI: 何度もアクセスしないと必要なデータが揃わないAPI APIユーザ 面倒くさいAPIになる ChattyなAPIは作らない
23.
データはフラットなほうがいい? { "id":1, "name":"Yuto", "birthday":3, "gender":"male" } { "id":1, "name":"Yuto", "profile":{ "birthday":3, "gender":"male" } } フラットにして無駄に階層が増えてしまっている。 答え:なるべくフラットがいい { "id":123, "date":"2014-12-02", "sender":{ "id":3, "gender":"male" }, "receiver":{ "id":10, "gender":"female" } } 階層が見やすい場合、OK
24.
配列?フォーマット? [{“id”:1,”name”:”taro”},{“id”:2,”name”:”hanako”}] {“friends”: [{“id”:1,”name”:”taro”},{“id”:2,”name”:”hanako”}] } OR 以下の3つの理由から2を推奨 • レスポンスデータが何を示しているかすぐわかる • データをオブジェクトに統一できる •
セキュリティ上のリスクを避ける事ができる JSONインジェクション 1、 2、
25.
レスポンスの変数名 • わかりやすく、かつ短い名前に 例)userRegistrationDateTime→registeredAt • ケースは利用しやすいほうで
Googleはキャメルと言っているが、 Twitterなどスネークの企業も多くある キャメルかスネークか統一すること • 慣習的でない省略は禁止 {“id”:1,”registeredAt”:”2015-5-5”}
26.
エラーレスポンス • ステータスコードは正しいものを返す – 登録失敗しているのに、200とかを返さない •
エラー内容をクライアントに返す – ヘッダに入れるかボディにいれるかは好み
27.
まとめ • どんなユーザが使うかを決める • その上でユーザが使いやすいものを想像し、 APIを設計 •
設計におけるルール – 基本的には慣習に乗っ取る – 慣習が使いづらいものであれば、そこは直す
28.
参考にした本 水野 貴明 著 2014年11月
発行 by apigee free
Download now