Submit Search
Api設計
11 likes
•
4,905 views
Yuto Suzuki
オライリーのWebAPIを参考にAPIの設計に関するスライドを作りました。
Engineering
Read more
1 of 28
Download now
Downloaded 53 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
More Related Content
What's hot
(19)
PDF
我が家のフロントエンド開発事情
Naoki Yamada
PPTX
smartFXにおけるApache Cordovaの活用について
剛志 森田
KEY
スマートフォンアプリケーション開発の最新動向
Tsutomu Ogasawara
PPTX
デザイナさんにGithubでpr投げてもらうまで
Hideharu Okuma
PDF
Speech API の概要(Microsoft Cognitive Services)
Atsushi Yokohama (BEACHSIDE)
PPTX
ACI Stateful APP 作ってみた
yushimaz
PDF
~新しい着回しと出会おう~ 『XZ(クローゼット)』 を支える技術 -Cordova編-
Shinichiro Yoshida
PDF
無料で始めるアプリのバックエンド開発
Shoichi Takagi
PDF
スキスキIonic
Kon Yuichi
PPTX
エンジニアのための勉強会 #3 『RESTful API』
Naoki Yoshitake
PPTX
爆速フレームワークでREST APIを作った話
Shohei Tai
PDF
WebAPIのこれまでとこれから
Yohei Yamamoto
PDF
Build 2017 更新情報 Cognitive Services 編
Atsushi Yokohama (BEACHSIDE)
PDF
Vtecxlt20151201
Shinichiro Takezaki
PPTX
Onsen UIが目指すもの
アシアル株式会社
PDF
Onsen UI 2.0とUIライブラリの未来
アシアル株式会社
PDF
iQONの開発手法 at iQONエンジニアセミナー
Imamura Masayuki
PDF
iQONを支えるクローラーの裏側
Takehiro Shiozaki
PDF
WordPress APIで作るモバイルアプリ
アシアル株式会社
我が家のフロントエンド開発事情
Naoki Yamada
smartFXにおけるApache Cordovaの活用について
剛志 森田
スマートフォンアプリケーション開発の最新動向
Tsutomu Ogasawara
デザイナさんにGithubでpr投げてもらうまで
Hideharu Okuma
Speech API の概要(Microsoft Cognitive Services)
Atsushi Yokohama (BEACHSIDE)
ACI Stateful APP 作ってみた
yushimaz
~新しい着回しと出会おう~ 『XZ(クローゼット)』 を支える技術 -Cordova編-
Shinichiro Yoshida
無料で始めるアプリのバックエンド開発
Shoichi Takagi
スキスキIonic
Kon Yuichi
エンジニアのための勉強会 #3 『RESTful API』
Naoki Yoshitake
爆速フレームワークでREST APIを作った話
Shohei Tai
WebAPIのこれまでとこれから
Yohei Yamamoto
Build 2017 更新情報 Cognitive Services 編
Atsushi Yokohama (BEACHSIDE)
Vtecxlt20151201
Shinichiro Takezaki
Onsen UIが目指すもの
アシアル株式会社
Onsen UI 2.0とUIライブラリの未来
アシアル株式会社
iQONの開発手法 at iQONエンジニアセミナー
Imamura Masayuki
iQONを支えるクローラーの裏側
Takehiro Shiozaki
WordPress APIで作るモバイルアプリ
アシアル株式会社
Similar to Api設計
(20)
PPTX
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
CData Software Japan
PPTX
WebIntentsにより拓かれる次のWeb
Kensaku Komatsu
PDF
オープンデータ Web API
Hironori Sakamoto
PDF
Whats ACI API?
Takao Setaka
PPTX
devsami kansai 2012 #c2
Yushi_Takagi
PPTX
20170705 apiをつくろう
CData Software Japan
PDF
2015/11/15 Javaでwebアプリケーション入門
Asami Abe
PDF
#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ
Kazuya Sugimoto
PDF
APICのREST API入門
Takehiro Yokoishi
KEY
20120413 nestakabaneworkshop
Yoichiro Sakurai
PPTX
Web API を気軽に使えるツールやサービスのご紹介
CData Software Japan
PPTX
20170420 infoteria apiセミナーupload
CData Software Japan
PPTX
Api as a product
CData Software Japan
PPTX
APIとは
moonfactory Inc.
PDF
おすすめインフラ! for スタートアップ
Koichiro Sumi
PDF
Tableau Developers Club - Web Data Connector handson
Kenji Noguchi
PPTX
Adwords Api Developer Guide Summary
Toshiyuki Maeda
PDF
AppPotモバイルアプリ開発『内製化』
Ryohei Sogo
PPTX
Swagger jjug ccc 2018 spring
kounan13
PDF
【2018/09/11】PAYでのReact Nativeにおける APIクライアント実装 について
Natsuki Yamanaka
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
CData Software Japan
WebIntentsにより拓かれる次のWeb
Kensaku Komatsu
オープンデータ Web API
Hironori Sakamoto
Whats ACI API?
Takao Setaka
devsami kansai 2012 #c2
Yushi_Takagi
20170705 apiをつくろう
CData Software Japan
2015/11/15 Javaでwebアプリケーション入門
Asami Abe
#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ
Kazuya Sugimoto
APICのREST API入門
Takehiro Yokoishi
20120413 nestakabaneworkshop
Yoichiro Sakurai
Web API を気軽に使えるツールやサービスのご紹介
CData Software Japan
20170420 infoteria apiセミナーupload
CData Software Japan
Api as a product
CData Software Japan
APIとは
moonfactory Inc.
おすすめインフラ! for スタートアップ
Koichiro Sumi
Tableau Developers Club - Web Data Connector handson
Kenji Noguchi
Adwords Api Developer Guide Summary
Toshiyuki Maeda
AppPotモバイルアプリ開発『内製化』
Ryohei Sogo
Swagger jjug ccc 2018 spring
kounan13
【2018/09/11】PAYでのReact Nativeにおける APIクライアント実装 について
Natsuki Yamanaka
Ad
More from Yuto Suzuki
(20)
PPTX
5xx解消への道のり
Yuto Suzuki
PPTX
MySQLのインデックス入門
Yuto Suzuki
PPTX
Ad vol.2
Yuto Suzuki
PPTX
広告勉強会
Yuto Suzuki
PPTX
Mastering Bitcoin ~network~
Yuto Suzuki
PPTX
Aerospike基本のき
Yuto Suzuki
PPTX
いまさらAkkaStream
Yuto Suzuki
PPTX
Introduction of View Through Tracking
Yuto Suzuki
PPTX
エンジニアのためのマーケティング
Yuto Suzuki
PPTX
How to Build a Team
Yuto Suzuki
PPTX
プロダクトにおけるScala
Yuto Suzuki
PPTX
Do you like scala
Yuto Suzuki
PPTX
Re invent
Yuto Suzuki
PPTX
Slackから始めるChatOps
Yuto Suzuki
PPTX
大学の時の研究の話
Yuto Suzuki
PPTX
F.O.Xを支える技術
Yuto Suzuki
PPTX
Scala戦士を増やせ
Yuto Suzuki
PPTX
Recommend scala
Yuto Suzuki
PDF
スクラムに学ぶ開発の回し方
Yuto Suzuki
PDF
Breezeで始めるデータ分析
Yuto Suzuki
5xx解消への道のり
Yuto Suzuki
MySQLのインデックス入門
Yuto Suzuki
Ad vol.2
Yuto Suzuki
広告勉強会
Yuto Suzuki
Mastering Bitcoin ~network~
Yuto Suzuki
Aerospike基本のき
Yuto Suzuki
いまさらAkkaStream
Yuto Suzuki
Introduction of View Through Tracking
Yuto Suzuki
エンジニアのためのマーケティング
Yuto Suzuki
How to Build a Team
Yuto Suzuki
プロダクトにおけるScala
Yuto Suzuki
Do you like scala
Yuto Suzuki
Re invent
Yuto Suzuki
Slackから始めるChatOps
Yuto Suzuki
大学の時の研究の話
Yuto Suzuki
F.O.Xを支える技術
Yuto Suzuki
Scala戦士を増やせ
Yuto Suzuki
Recommend scala
Yuto Suzuki
スクラムに学ぶ開発の回し方
Yuto Suzuki
Breezeで始めるデータ分析
Yuto Suzuki
Ad
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