Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Smaregi Tech Talk #1 REST API
Search
non_z250
October 16, 2019
Programming
0
150
Smaregi Tech Talk #1 REST API
実務でつまずくREST API
non_z250
October 16, 2019
Tweet
Share
Other Decks in Programming
See All in Programming
AIの誤りが許されない業務システムにおいて“信頼されるAI” を目指す / building-trusted-ai-systems
yuya4
6
3.7k
生成AIを利用するだけでなく、投資できる組織へ
pospome
2
350
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
10
1.3k
Microservices rules: What good looks like
cer
PRO
0
1.5k
TestingOsaka6_Ozono
o3
0
160
FluorTracer / RayTracingCamp11
kugimasa
0
240
【Streamlit x Snowflake】データ基盤からアプリ開発・AI活用まで、すべてをSnowflake内で実現
ayumu_yamaguchi
1
120
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
520
Python札幌 LT資料
t3tra
2
120
WebRTC、 綺麗に見るか滑らかに見るか
sublimer
1
190
関数実行の裏側では何が起きているのか?
minop1205
1
710
「コードは上から下へ読むのが一番」と思った時に、思い出してほしい話
panda728
PRO
38
26k
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.8k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Navigating Team Friction
lara
191
16k
Code Reviewing Like a Champion
maltzj
527
40k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Become a Pro
speakerdeck
PRO
31
5.7k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
1k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.5k
Transcript
実務でつまずく REST API 2019/10/24
自己紹介 2 @non_z250 non’s Labo ( https://labo.nozomi.bike/ ) PHP /
Laravel / CakePHP / Vue / Nuxt / C# Bike: Z250
自己紹介 3 普段は……? 今年の抱負メーカー (個人開発) (https://ambition.nozomi.bike/) トドTask (個人開発) (https://todo.nozomi.bike/) スマレジ本部機能開発
サーバーサイド担当
REST API 4 実践的なREST API
REST API 5 よくあるやつ products [ GET ] api/products (参照)
[ POST ] api/products (登録) [ PUT ] api/products/{:id} (更新) [ GET ] api/products/{:id} (参照) [ DELETE ] api/products/{:id} (削除) [ GET ] api/products/{:id},{:id},{:id}(参照)
REST API 6 マスターデータならとても簡単
REST API 7 実際には・・・
REST API 8 YYY XXX ZZZ このあたりを一括で 登録したいんやけどなぁ
REST API 9 多機能になるにつれ発生する
REST API 10 自作アプリでもあった
REST API 11 tasks notes tasks_notes tasks - タスク notes
- ノート tasks_notes - 中間テーブル
REST API 12 tasks notes tasks_notes api/tasks_notes でリソースにアクセス???
REST API 13 解決策① テーブル=リソースではない
todo REST API 14 tasks notes tasks_notes [ POST ]
api/todo { “task”: “新しいアプリを作る”, “note”: “LINE Bot を使いたい”, “status”: “1” }
REST API 15 解決策② 煩わしいAPIにしない
tasks notes tasks_notes [ POST ] api/tasksのResponse { “message”: “タスクの登録に成功。
” } 16 REST API
[ POST ] api/notesのResponse { “id”: “1”, “note”: “LINE Bot
を使いたい”, “status”: “1” } 17 REST API tasks notes tasks_notes
[ POST ] api/notesのResponse { “id”: “1”, “note”: “LINE Bot
を使いたい”, “status”: “1” } [ POST ] api/tasks { “id”: “1”, “task”: “新しいアプリを作る”, “status”: “1”, “note_id”: “1” } 18 REST API tasks notes tasks_notes
REST API 19 解決策①のほうがスマートでいい
REST API 20 アイスブレイク
REST API 21 図書館API https://calil.jp/doc/api.html ISBNが元になっている。 専用データベースや、jsライブ ラリも提供している。 https://www.ndl.go.jp/jp/us e/api/index.html
国立国会図書館の公式サー ビス。 加盟する全国の図書館から情 報を取得できる。 http://crd.ndl.go.jp/referenc e/ 国立国会図書館に関連する 組織のAPI。 カーリル 国立図書館API レファレンス協同 データベース
REST API 22 岡崎市立中央図書館事件 https://ja.wikipedia.org/wiki/%E5%B2%A1%E5%B4%8E%E5%B8%82%E7%AB%8B%E4%B8%AD%E5%A4%AE%E5%9B%B 3%E6%9B%B8%E9%A4%A8%E4%BA%8B%E4%BB%B6 APIが当たり前になりつつある そうなればこういう事件は起こらない
REST API 23 サービスを起動したいんやけ ど、リソースちゃうしなぁ 検索サービス
REST API 24 解決策 RESTにこだわりすぎない
REST API 25 検索サービス [ GET ] api/search { “users”:
{ “name”: “Z250”, }, “tasks”: { “task”: “Z250” }, “notes”: { “note”: “Z250” } }
REST API 26 検索サービス [ GET ] api/search?q=Z250 [ POST
] api/search [ PUT ] api/search [ DELETE ] api/search は無い
REST API 27 RESTにこだわりすぎない 使用者にわかりやすいように
REST API 28 エラー処理
REST API 29 エラーレスポンス { “error_code”: “404”, “error_message”: “このIDは存在しません” }
REST API 30 HTTP ステータスコードを使う 当たり前だけど、中々できない
200 OK - GET, PUT, PATCH, DELETE リクエストが成功した場合に応答。もしくは、 POST リクエストが結果的に何もリソースを作らなかった場合に応答。
201 Created - POST リクエストがリソース作成に成功した場合に応答。なお、そのリソースへのリンクを Location ヘッダに含める必要がある。 204 No Content - 成功したDELETE リクエストで、ボディを返したくない場合に応答 301 Moved Permanently - 恒久的移動 304 Not Modified - HTTP キャッシュが有効な場合に応答 400 Bad Request - パース不可能なリクエストボディが来た場合に応答 401 Unauthorized - 認証がされていない、もしくは不正なトークンの場合に応答 403 Forbidden - 認証はされているが、認可されていないリソースへのリクエストに応答 404 Not Found - 存在しないリソースへのリクエストに応答 405 Method Not Allowed - 認可されていないメソッドでのリクエストに応答 410 Gone - 今は存在しないリソース(廃止された APIなど)で空要素を返す場合などに応答 415 Unsupported Media Type - 対応していない MediaType が指定された場合に応答 422 Unprocessable Entity - バリデーションエラーに対して応答 429 Too Many Requests - 回数制限をオーバーしたリクエストに対して応答 REST API 31
REST API 32 エラーレスポンス [ GET ] api/users/99999999 HTTP_STATUS_CODE: 404
{ “message”: “このIDは存在しません” }
最後に 33 - フロント言語の台頭で APIは更に重要に - 機械学習・統計のネタにされやすくなる - 食べログ -
天気予報 - 図書館 - リソースではなくサービスの提供もできる
実務でつまずく REST API Fin