Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
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
130
Smaregi Tech Talk #1 REST API
実務でつまずくREST API
non_z250
October 16, 2019
Tweet
Share
Other Decks in Programming
See All in Programming
ファインディ株式会社におけるMCP活用とサービス開発
starfish719
0
2k
速いWebフレームワークを作る
yusukebe
5
1.7k
GitHubとGitLabとAWS CodePipelineでCI/CDを組み比べてみた
satoshi256kbyte
4
250
Reading Rails 1.0 Source Code
okuramasafumi
0
250
AWS発のAIエディタKiroを使ってみた
iriikeita
1
190
為你自己學 Python - 冷知識篇
eddie
1
350
機能追加とリーダー業務の類似性
rinchoku
2
1.3k
Testing Trophyは叫ばない
toms74209200
0
890
1から理解するWeb Push
dora1998
7
1.9k
Ruby×iOSアプリ開発 ~共に歩んだエコシステムの物語~
temoki
0
350
複雑なフォームに立ち向かう Next.js の技術選定
macchiitaka
2
210
Flutter with Dart MCP: All You Need - 박제창 2025 I/O Extended Busan
itsmedreamwalker
0
150
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
339
57k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
How to Ace a Technical Interview
jacobian
279
23k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
How to train your dragon (web standard)
notwaldorf
96
6.2k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.7k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.6k
Making Projects Easy
brettharned
117
6.4k
Designing Experiences People Love
moore
142
24k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
810
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.6k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3k
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