SlideShare a Scribd company logo
REST API のコツ
自己紹介
名前 : pospome
ブログ : http://d.hatena.ne.jp/pospome/
職種 : サーバサイドエンジニア
これは REST API の基礎部分は理解した上で
実装前に見るといいかもしれない資料です
なぜ勉強しようと思ったのか?
半年ほど某有名APIを触る機会があった
そのAPIは(当然ながら)設計に一貫性があり
自分の作る変なAPIとは大違いだった
RESTって
URI と HTTPメソッドだけ決めれば
いーんじゃないの?
このままじゃダメな気がする
自分は REST API を設計できないことを知った
ということで、コツを紹介していきます
LSUDs / SSKDs
Web API には大きく分けて2種類ある
それが LSUDs と SSKDs
どちらを作るのかでAPIの性質が変わる
LSUDsとは
・Large Set of Unknown Developers
・不特定多数のユーザーに提供するAPI
 例:FaceBookAPI, TwitterAPI
・ユーザーの要求に最適化したAPIを
 実装することは不可能なので、
 データの種類別にエンドポイントを定義する傾向にある
LSUDsとは
・最適化は不可能だが、
 最低限の要求には応えられるように
 細かいオプションを用意したAPIになっていたり、
 APIの数が多い
 例:フィールド指定、ソート指定
・APIへのアクセス数を減らし、利便性を上げるために
 関連するデータを一緒に返すことも考える
 最適化できないながらも
 ユーザーのユースケースに寄せた設計にする
SSKDsとは
・Small Set of Known Developers
・特定のシステムのみで利用する専用のAPI
 例:自社サービス、社内システム
・用途が決まっているので、
 データの種類よりも画面別、アクション別に
 エンドポイントを定義する傾向にある
 一般的にAPIというと LSUDs のイメージが強いので、
 DBを抽象化したAPIを作りたがる人もいるが、
 リソース指向のリソースはDBのテーブル単位とは限らない
 リソースとは利用者の要求を満たすデータ 
 1画面の表示に必要なデータの集合体もリソースになる
SSKDsとは
・1画面1API , 1アクション1API が基本
 ボトルネックになる通信回数を最小限にする
 クライアント側が管理するAPIを最小限にする
 ただし、無理に1画面1APIにする必要はない
 サービスの仕様に合ったAPIを実装するのが大事
・必要な情報が決まっているので、
 取得データの細かいオプション指定は不要だが、
 クライアントの必要とするデータを
 最適化して返す必要がある
LSUDs を SSKDs に変換する
APIサーバを用意するアーキテクチャもある
LSUDs API
APIサーバ
SSKDs API
ブラウザ
IOS
Android
DBのデータ構造をそのまま返すAPIはNG
クライアントのために
DBを抽象化しなければならない
クライアントが使いやすいAPIを心がけよう
サーバサイドの基本は受け身
どちらを選択してエンドポイントを
設計するかが最初の1歩になる
SSKDs は自分たち専用であり、
LSUDs を参考にできない部分があるので、
オレオレ仕様になりがち
「チームで共通の認識を持てればいい」
「ドキュメントあるからそれを見ればいい」
↑
こういう会話が出てくると危ない
正しい設計を見失ってる兆候
変な設計にしてしまうと
ドキュメント更新が止まった時に困ったり・・・
毎回口頭で説明することになったり・・
色々と面倒です
事前にちゃんと設計しておくことが大事
URI設計
・リソースは集合体なので基本的に複数形にする
 1つのデータだから単数形、
 複数のデータだから複数形ということではなく、
 リソースとしての表現を統一する
 NG test.com/user/100 ←取得するデータは1件
 NG test.com/users/   ←取得するデータは複数件
 OK test.com/users/100
 OK test.com/users/
 扱うリソースが単数に限られる場合は単数にしてもいい
・リソースは可能な限りパスで表現する
 NG test.com/users/   ←一覧を返す
 NG test.com/users/100 ←指定されたidで返す
 OK test.com/users/list
 OK test.com/users/(detail)/100
 
 単語を繋げる場合はパスとして表現できないかを検討する
 NG test.com/latest_users_list
 OK test.com/users/list/latest
・HTTPメソッドで表現できるのであれば、動詞は含めない
 NG POST test.com/users/add
 OK POST test.com/users/
 GETなど明示的に動詞を含めることで
 表現に幅を持たせる事ができるケースもあるので、
 動詞を使ってはいけないということではない
 GET test.com/users/search?name=suzuki&age=20
・オプションはパスではなくクエリパラメータにする
 NG test.com/users/3
 OK test.com/users?page=3
・Viewがある場合はAPIであることを明示する
 ViewなのかAPIなのかを明示しないと管理しにくい
 NG test.com/users/100
 OK test.com/api/users/100
 OK api.test.com/users/100
・自分の情報であればid指定ではなく、
 self, me というエイリアスを利用できるようにする
 NG test.com/users/100
 OK test.com/users/me
 エイリアスは便利なだけではなく、
 Controllerのエントリーポイントを分けられる
 権限周りのバリデーションを分けるたり、
 me なのにバリデーションがかかっていないなどの
 不具合もパッと見で確認できる
 エイリアスを利用するには
 サーバ側でidを特定できる必要がある
 
個人的な実装になってしまいますが、
SSKDs の場合には以下の様なURIにすることが多いです
【HTMLを表示するためのURI】
GET test.com/users/
【画面表示用API】
GET test.com/api/v1/view/movie_list
GET test.com/api/v1/view/movie_detail/{id}
GET test.com/api/v1/view/common/header
【Action用API】
POST test.com/api/v1/action/movie/
PUT test.com/api/v1/action/movie/{id}
DELETE test.com/api/v1/action/movie/{id}
有名どころのAPIでも違いがあったりするので、
どれかに寄せて作ると一貫性があって、
きれいなAPIになる
URI設計については
このスライドの説明を真に受けてはいけない
一貫性が大事
APIバージョン
APIにバージョンを持たせることで
クライアント側で利用するAPIを任意に選択できる
サーバのAPI変更作業にクライアントが引っ張られない
バージョンアップのタイミングでリファクタリングが可能
後方互換を保とう
test.com/v1/users/list
test.com/v2/users/list
URIではなく、
HTTPヘッダーに指定されたバージョンを元に
ルーティングする方法もある
HATEOS
HATEOS
Hypermedia As The Engine Of Application State
リソース同士に関連性のあるAPIのこと
(´・ω・`) ?
以下はAPIのレスポンスです
一応JSONっぽく書いてます
{
users:{
{
id:1,
name:'sato'
},
{
id:2,
name:'suzuki'
},
}
}
HATEOSにしました
{
users:{
{
id:1,
name:'sato',
link: {
href: “http://api.test.com/users/1”
}
},
{
id:2,
name:'suzuki',
ink: {
href: “http://api.test.com/users/2”
}
},
}
}
HATEOSは
レスポンスの中に次の動作に必要なAPIを用意する形式
HTMLのようなリンクのあるデータ構造になるので、
クライアント側でAPIの管理をしなくていい
JSON に <a> を埋め込むイメージ
*先ほどのHATEOSの例は簡易的なものです
本当はもっとフィールドが必要です
【HATEOSのメリット】
・APIのURI変更がサーバサイドで完結する
・クライアントがAPIを管理しなくていい
【HATEOSのデメリット】
・採用事例があまりない気がする
・送信するデータ量が多くなる
・サーバサイドがデータの関連性を意識する必要がある
 SSKDsだと画面遷移を意識する必要もあるので、
 画面側の仕様変更が実装に影響しやすくなる
APIのレスポンスデータ構造
すでに規格が存在する
・JSON-RPC
・HAL
・JSON API
・Collection+JSON
これらを検討してもいいし、
自分で定義してもいい
とりあえず、ググるといいかも
レスポンスデータのコツ
・DBから取得したデータはクライアント用に加工して返す
 クライアントにとって最適なレスポンスを提供する
・DBのカラム名とレスポンスのフィールド名は
 同じである必要はない
 クライアント側にとって自然なフィールド名にする
・無駄な階層化を避ける
{
id:10,
name: {
last: “lastname”,
first: “firstname”
}
age: 20
}
↓
{
id:10,
last_name: “lastname”,
first_name: “firstname”,
age: 20
}
・似たようなデータ構造は階層にしてもいい
{
my_last_name: “lastname”,
my_first_name: “firstname”,
friend_last_name: “lastname”,
friend_first_name: “firstname”,
}
↓
{
me: {
last_name: “lastname”,
first_name: “firstname”,
},
friend:{
last_name: “lastname”,
first_name: “firstname”,
}
}
・レスポンスのトップレベルにオブジェクト名を付ける
 何のデータであるかが分かりやすい
[
{id:10, score:10},
{id:11, score:11},
{id:12, score:12},
]
↓
{
users:[
{id:10, score:10},
{id:11, score:11},
{id:12, score:12},
]
}
サーバ側がレスポンスを利用することはないので
クライアントの要望に沿った構造にするのが基本
APIのリクエストデータ構造
リクエストについては
レスポンス構造ほど考える必要はないので、
そんなに悩むこともないはず
どのようなデータを渡すかくらいだと思う
POST/PUT で利用する
content-type だけ抑えておこう
application/x-www-form-urlencoded
or
application/json
application/x-www-form-urlencoded
・HTMLのForm送信
・一般的なイメージはこれかも
・body部分に
 key=value&key=value の形式で
 データを格納する
・FWだと get_param(“key”) とかで取得できる
application/json
・個人的に Web API の POST/PUT といえばこれ
・最近はSPAが主流だから
 基本こっちを利用すると思うけど、
 意外と知らない人が多い印象?
・body部分にJSON形式でデータを格納する
・FWだと get_body().parseJson() とかで
 パースしてから取得する必要があるかも
 get_param() 的なやつでは取れない印象
application/json
・Form形式とは違い、
 データをネストさせることができるので、
 柔軟なデータ表現が可能になる
 複雑なデータ構造を扱うならこれがいい
・レスポンスデータと同じように
 JSON Schema で管理できる
・レスポンスがJSONならリクエストもJSONなのでは?
 という自然な発想
application/json の方が便利そうだけど、
HTMLのFormを利用するのであれば、
x-www-form-urlencoded の方がいいかもしれない
Google, FaceBook, Twitter も
統一されているわけではない
エラー時のレスポンス
大体以下が必要になる
・システムのエラーコード
 お問い合わせ対策&クライアント側のメッセージ出し分け
 変に細かくすると管理が大変
 ざっくりし過ぎると意味が無い
・開発者用のエラーメッセージ
 本番環境では出力しないでおくといい
 
・エラーに対するドキュメントのリンク
 普通に面倒なので SSKDs では不要だと思う
・ユーザー用のエラーメッセージ
 ある程度抽象的なデフォルトメッセージは
 サーバで管理し、
 必要に応じてクライアント側で上書きするのが望ましい
サーバ側では
「システムエラーです」
「データが存在しません」
的な抽象的なメッセージとエラーコードを返す
クライアント側では
エラーコードと表示している画面によって、
「データが存在しません」を
「フレンドが存在しません。一度画面を更新してからもう一度操
作してください」
のようなユーザーに優しいものに書き換える
エラーコードって結構強力
メンテナンス用のレスポンス
メンテ用のエラーレスポンスを作っておくと便利
・メンテ用のエラーコード
 503でもいいけどエラーコードが必要な場合は
 用意しておく
・メンテ文言
 
・メンテ開始、終了時間
・ただ、なくてもなんとかなるので、どーでもいいかも
HTTP Header
HTTP Header の設定には便利なものが多い
普段は見ないところにも気を配ろう
・Expire
・Etag, Last-Modified
・Cache-Control
・Content-Type
・Accept
・Content-Security-Policy
・X-Frame-Options
・X-XSS-Protection
アプリケーショントークンのような固定値は
Headerに設定できるようにすると
APIの利便性が向上することもある
HTTPの URI, Body だけではなく、Header も上手く使おう
メジャーなAPIで学ぶ
自分たちで考えても良いAPIはできない
本を読むことも大切だが、
世の中のAPIがどうなっているのかを知ろう
僕も時間をかけました
ただし、
LSUDs と SSKDs では設計方針が違うので、
そのまま流用できるわけではない
APIは甘くない
事前に設計方針をすり合わせましょう
まとめ
REST API について
過去の僕のように
HTTP Method を使って、URIを決めるだけ
と思ってませんか?
REST API は奥が深い
REST API に限らず新しい技術は危険がいっぱい
手に馴染むまでしっかり勉強しましょう
おわり

More Related Content

What's hot

世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
 
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
shinjiigarashi
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
Takuto Wada
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
 
Web API: The Good Parts 落穂ひろい
Web API: The Good Parts 落穂ひろいWeb API: The Good Parts 落穂ひろい
Web API: The Good Parts 落穂ひろい
API Meetup
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろうKota Mizushima
 
OAuth 2.0のResource Serverの作り方
OAuth 2.0のResource Serverの作り方OAuth 2.0のResource Serverの作り方
OAuth 2.0のResource Serverの作り方
Hitachi, Ltd. OSS Solution Center.
 
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門するKeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
Hitachi, Ltd. OSS Solution Center.
 
PostgreSQLアンチパターン
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターン
Soudai Sone
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
 
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
Takeshi Ogawa
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
yoku0825
 
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
Daichi Koike
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Koichi Tanaka
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
 

What's hot (20)

世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMP
 
Web API: The Good Parts 落穂ひろい
Web API: The Good Parts 落穂ひろいWeb API: The Good Parts 落穂ひろい
Web API: The Good Parts 落穂ひろい
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
 
OAuth 2.0のResource Serverの作り方
OAuth 2.0のResource Serverの作り方OAuth 2.0のResource Serverの作り方
OAuth 2.0のResource Serverの作り方
 
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門するKeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
 
PostgreSQLアンチパターン
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターン
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
 
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
 
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
 

Viewers also liked

Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方
Yasutaka Kawamoto
 
AWSのセキュリティについて
AWSのセキュリティについてAWSのセキュリティについて
AWSのセキュリティについて
Yasuhiro Horiuchi
 
脱RESTful API設計の提案
脱RESTful API設計の提案脱RESTful API設計の提案
脱RESTful API設計の提案
樽八 仲川
 
ZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツ
ShinsukeYokota
 
AWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch Logs
AWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch LogsAWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch Logs
AWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch Logs
Amazon Web Services Japan
 
AWS Systems manager 入門
AWS Systems manager 入門AWS Systems manager 入門
AWS Systems manager 入門
Serverworks Co.,Ltd.
 
CloudWatchの使い方
CloudWatchの使い方CloudWatchの使い方
CloudWatchの使い方ShinsukeYokota
 
AWS初心者向けWebinar AWSとのネットワーク接続入門
AWS初心者向けWebinar AWSとのネットワーク接続入門AWS初心者向けWebinar AWSとのネットワーク接続入門
AWS初心者向けWebinar AWSとのネットワーク接続入門
Amazon Web Services Japan
 
Black Belt Online Seminar Amazon CloudWatch
Black Belt Online Seminar Amazon CloudWatchBlack Belt Online Seminar Amazon CloudWatch
Black Belt Online Seminar Amazon CloudWatch
Amazon Web Services Japan
 
AWS Black Belt Online Seminar 2017 Amazon S3
AWS Black Belt Online Seminar 2017 Amazon S3AWS Black Belt Online Seminar 2017 Amazon S3
AWS Black Belt Online Seminar 2017 Amazon S3
Amazon Web Services Japan
 
AWS セキュリティとコンプライアンス
AWS セキュリティとコンプライアンスAWS セキュリティとコンプライアンス
AWS セキュリティとコンプライアンス
Amazon Web Services Japan
 
AWS サービスアップデートまとめ re:Invent 2017 直前編
AWS サービスアップデートまとめ re:Invent 2017 直前編AWS サービスアップデートまとめ re:Invent 2017 直前編
AWS サービスアップデートまとめ re:Invent 2017 直前編
Amazon Web Services Japan
 
AWS AI Solutions
AWS AI SolutionsAWS AI Solutions
AWS AI Solutions
Amazon Web Services Japan
 

Viewers also liked (13)

Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方
 
AWSのセキュリティについて
AWSのセキュリティについてAWSのセキュリティについて
AWSのセキュリティについて
 
脱RESTful API設計の提案
脱RESTful API設計の提案脱RESTful API設計の提案
脱RESTful API設計の提案
 
ZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツ
 
AWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch Logs
AWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch LogsAWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch Logs
AWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch Logs
 
AWS Systems manager 入門
AWS Systems manager 入門AWS Systems manager 入門
AWS Systems manager 入門
 
CloudWatchの使い方
CloudWatchの使い方CloudWatchの使い方
CloudWatchの使い方
 
AWS初心者向けWebinar AWSとのネットワーク接続入門
AWS初心者向けWebinar AWSとのネットワーク接続入門AWS初心者向けWebinar AWSとのネットワーク接続入門
AWS初心者向けWebinar AWSとのネットワーク接続入門
 
Black Belt Online Seminar Amazon CloudWatch
Black Belt Online Seminar Amazon CloudWatchBlack Belt Online Seminar Amazon CloudWatch
Black Belt Online Seminar Amazon CloudWatch
 
AWS Black Belt Online Seminar 2017 Amazon S3
AWS Black Belt Online Seminar 2017 Amazon S3AWS Black Belt Online Seminar 2017 Amazon S3
AWS Black Belt Online Seminar 2017 Amazon S3
 
AWS セキュリティとコンプライアンス
AWS セキュリティとコンプライアンスAWS セキュリティとコンプライアンス
AWS セキュリティとコンプライアンス
 
AWS サービスアップデートまとめ re:Invent 2017 直前編
AWS サービスアップデートまとめ re:Invent 2017 直前編AWS サービスアップデートまとめ re:Invent 2017 直前編
AWS サービスアップデートまとめ re:Invent 2017 直前編
 
AWS AI Solutions
AWS AI SolutionsAWS AI Solutions
AWS AI Solutions
 

Similar to REST API のコツ

エンジニアのための勉強会 #3 『RESTful API』
エンジニアのための勉強会 #3 『RESTful API』エンジニアのための勉強会 #3 『RESTful API』
エンジニアのための勉強会 #3 『RESTful API』
Naoki Yoshitake
 
#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ
#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ
#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ
Kazuya Sugimoto
 
Api設計
Api設計Api設計
Api設計
Yuto Suzuki
 
APIとは
APIとはAPIとは
APIとは
moonfactory Inc.
 
APICのREST API入門
APICのREST API入門APICのREST API入門
APICのREST API入門
Takehiro Yokoishi
 
Editor-based REST Client のご紹介
Editor-based REST Client のご紹介Editor-based REST Client のご紹介
Editor-based REST Client のご紹介
知之 朝枝
 
RestfulなAPIの設計のお話
RestfulなAPIの設計のお話RestfulなAPIの設計のお話
RestfulなAPIの設計のお話
ftsan
 
マッシュアップ勉強会
マッシュアップ勉強会マッシュアップ勉強会
マッシュアップ勉強会guestadcb01
 
マッシュアップ勉強会
マッシュアップ勉強会マッシュアップ勉強会
マッシュアップ勉強会seiryo
 
Spring'17リリースノート輪読会 API By フレクト
Spring'17リリースノート輪読会 API By フレクトSpring'17リリースノート輪読会 API By フレクト
Spring'17リリースノート輪読会 API By フレクト
政雄 金森
 
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open APIRESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open API
Kohei Saito
 
Web api beginners
Web api beginnersWeb api beginners
Web api beginners
Hirohide Sano
 
Adwords Api Developer Guide Summary
Adwords Api Developer Guide SummaryAdwords Api Developer Guide Summary
Adwords Api Developer Guide SummaryToshiyuki Maeda
 
2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門
Asami Abe
 
Railsから学ぶRESTfulなuri設計
Railsから学ぶRESTfulなuri設計Railsから学ぶRESTfulなuri設計
Railsから学ぶRESTfulなuri設計
Kanako Kobayashi
 
Heroku HTTP API Design Guide
Heroku HTTP API Design GuideHeroku HTTP API Design Guide
Heroku HTTP API Design Guide
Ayumu Aizawa
 
Restful Web Service Ch2
Restful Web Service Ch2Restful Web Service Ch2
Restful Web Service Ch2
kunit
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
DIVE INTO CODE Corp.
 
RESTfulとは
RESTfulとはRESTfulとは
RESTfulとは
星影 月夜
 

Similar to REST API のコツ (20)

エンジニアのための勉強会 #3 『RESTful API』
エンジニアのための勉強会 #3 『RESTful API』エンジニアのための勉強会 #3 『RESTful API』
エンジニアのための勉強会 #3 『RESTful API』
 
#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ
#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ
#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ
 
Api設計
Api設計Api設計
Api設計
 
APIとは
APIとはAPIとは
APIとは
 
APICのREST API入門
APICのREST API入門APICのREST API入門
APICのREST API入門
 
Editor-based REST Client のご紹介
Editor-based REST Client のご紹介Editor-based REST Client のご紹介
Editor-based REST Client のご紹介
 
RestfulなAPIの設計のお話
RestfulなAPIの設計のお話RestfulなAPIの設計のお話
RestfulなAPIの設計のお話
 
マッシュアップ勉強会
マッシュアップ勉強会マッシュアップ勉強会
マッシュアップ勉強会
 
マッシュアップ勉強会
マッシュアップ勉強会マッシュアップ勉強会
マッシュアップ勉強会
 
Spring'17リリースノート輪読会 API By フレクト
Spring'17リリースノート輪読会 API By フレクトSpring'17リリースノート輪読会 API By フレクト
Spring'17リリースノート輪読会 API By フレクト
 
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open APIRESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open API
 
Web api beginners
Web api beginnersWeb api beginners
Web api beginners
 
Adwords Api Developer Guide Summary
Adwords Api Developer Guide SummaryAdwords Api Developer Guide Summary
Adwords Api Developer Guide Summary
 
2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門
 
Railsから学ぶRESTfulなuri設計
Railsから学ぶRESTfulなuri設計Railsから学ぶRESTfulなuri設計
Railsから学ぶRESTfulなuri設計
 
Heroku HTTP API Design Guide
Heroku HTTP API Design GuideHeroku HTTP API Design Guide
Heroku HTTP API Design Guide
 
Restful Web Service Ch2
Restful Web Service Ch2Restful Web Service Ch2
Restful Web Service Ch2
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
 
RESTfulとは
RESTfulとはRESTfulとは
RESTfulとは
 
BEAR.Sunday@phpcon2012
BEAR.Sunday@phpcon2012BEAR.Sunday@phpcon2012
BEAR.Sunday@phpcon2012
 

More from pospome

トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめトランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
pospome
 
MicroServices & APIs
MicroServices & APIsMicroServices & APIs
MicroServices & APIs
pospome
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
 
どこに何を書くのか?
どこに何を書くのか?どこに何を書くのか?
どこに何を書くのか?
pospome
 
アプリケーションコードにおける技術的負債について考える
アプリケーションコードにおける技術的負債について考えるアプリケーションコードにおける技術的負債について考える
アプリケーションコードにおける技術的負債について考える
pospome
 
Datastore/Go のデータ設計と struct の振る舞いについて
Datastore/Go のデータ設計と struct の振る舞いについてDatastore/Go のデータ設計と struct の振る舞いについて
Datastore/Go のデータ設計と struct の振る舞いについて
pospome
 
Goのシンプルさについて
GoのシンプルさについてGoのシンプルさについて
Goのシンプルさについて
pospome
 
パッケージの循環参照
パッケージの循環参照パッケージの循環参照
パッケージの循環参照
pospome
 
Controllerのbefore_actionにおける インスタンス変数セットについて
Controllerのbefore_actionにおける インスタンス変数セットについてControllerのbefore_actionにおける インスタンス変数セットについて
Controllerのbefore_actionにおける インスタンス変数セットについて
pospome
 
サーバサイドNodeの使い道
サーバサイドNodeの使い道サーバサイドNodeの使い道
サーバサイドNodeの使い道
pospome
 

More from pospome (10)

トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめトランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
 
MicroServices & APIs
MicroServices & APIsMicroServices & APIs
MicroServices & APIs
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
 
どこに何を書くのか?
どこに何を書くのか?どこに何を書くのか?
どこに何を書くのか?
 
アプリケーションコードにおける技術的負債について考える
アプリケーションコードにおける技術的負債について考えるアプリケーションコードにおける技術的負債について考える
アプリケーションコードにおける技術的負債について考える
 
Datastore/Go のデータ設計と struct の振る舞いについて
Datastore/Go のデータ設計と struct の振る舞いについてDatastore/Go のデータ設計と struct の振る舞いについて
Datastore/Go のデータ設計と struct の振る舞いについて
 
Goのシンプルさについて
GoのシンプルさについてGoのシンプルさについて
Goのシンプルさについて
 
パッケージの循環参照
パッケージの循環参照パッケージの循環参照
パッケージの循環参照
 
Controllerのbefore_actionにおける インスタンス変数セットについて
Controllerのbefore_actionにおける インスタンス変数セットについてControllerのbefore_actionにおける インスタンス変数セットについて
Controllerのbefore_actionにおける インスタンス変数セットについて
 
サーバサイドNodeの使い道
サーバサイドNodeの使い道サーバサイドNodeの使い道
サーバサイドNodeの使い道
 

Recently uploaded

FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
atsushi061452
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 

Recently uploaded (15)

FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 

REST API のコツ