Submit Search
Upload
REST APIに入門する。
•
0 likes
•
194 views
K
Kazushi Kawamura
Follow
インターン生向けにRESTAPIの資料を作成したので、シェア。
Read less
Read more
Internet
Report
Share
Report
Share
1 of 46
Download now
Download to read offline
Recommended
RESTful API 入門
RESTful API 入門
Keisuke Nishitani
React(TypeScript) + Go + Auth0 で実現する管理画面
React(TypeScript) + Go + Auth0 で実現する管理画面
KentaEndoh
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
Kentaro Yoshida
RESTfulとは
RESTfulとは
星影 月夜
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTT DATA Technology & Innovation
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと
増田 亨
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
Shohei Koyama
Recommended
RESTful API 入門
RESTful API 入門
Keisuke Nishitani
React(TypeScript) + Go + Auth0 で実現する管理画面
React(TypeScript) + Go + Auth0 で実現する管理画面
KentaEndoh
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
Kentaro Yoshida
RESTfulとは
RESTfulとは
星影 月夜
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTT DATA Technology & Innovation
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと
増田 亨
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
Shohei Koyama
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
infinite_loop
GitOpsでKubernetesのManifest管理
GitOpsでKubernetesのManifest管理
Shinya Sasaki
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
増田 亨
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
pospome
MySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれや
yoku0825
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
コア・コンテキスト管理 - FIWARE WednesdayWebinars
コア・コンテキスト管理 - FIWARE WednesdayWebinars
fisuda
浸透するサーバーレス 実際に見るユースケースと実装パターン
浸透するサーバーレス 実際に見るユースケースと実装パターン
Amazon Web Services Japan
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
貴志 上坂
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
Insight Technology, Inc.
2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(1)-アーキテクチャ、データソース
2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(1)-アーキテクチャ、データソース
Enpel
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
shinjiigarashi
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
貴仁 大和屋
OCamlでWebアプリケーションを作るn個の方法
OCamlでWebアプリケーションを作るn個の方法
Hiroki Mizuno
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分け
Recruit Technologies
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
PHPでマルチスレッド
PHPでマルチスレッド
karky7
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
gree_tech
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話
Takuto Wada
ソフトウェアパターン概論およびパターンを活用したアーキテクチャ設計
ソフトウェアパターン概論およびパターンを活用したアーキテクチャ設計
Hironori Washizaki
Restful Web Service Ch2
Restful Web Service Ch2
kunit
WebSocketを学ぼう!
WebSocketを学ぼう!
Katsuki Chousa
More Related Content
What's hot
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
infinite_loop
GitOpsでKubernetesのManifest管理
GitOpsでKubernetesのManifest管理
Shinya Sasaki
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
増田 亨
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
pospome
MySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれや
yoku0825
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
コア・コンテキスト管理 - FIWARE WednesdayWebinars
コア・コンテキスト管理 - FIWARE WednesdayWebinars
fisuda
浸透するサーバーレス 実際に見るユースケースと実装パターン
浸透するサーバーレス 実際に見るユースケースと実装パターン
Amazon Web Services Japan
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
貴志 上坂
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
Insight Technology, Inc.
2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(1)-アーキテクチャ、データソース
2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(1)-アーキテクチャ、データソース
Enpel
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
shinjiigarashi
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
貴仁 大和屋
OCamlでWebアプリケーションを作るn個の方法
OCamlでWebアプリケーションを作るn個の方法
Hiroki Mizuno
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分け
Recruit Technologies
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
PHPでマルチスレッド
PHPでマルチスレッド
karky7
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
gree_tech
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話
Takuto Wada
ソフトウェアパターン概論およびパターンを活用したアーキテクチャ設計
ソフトウェアパターン概論およびパターンを活用したアーキテクチャ設計
Hironori Washizaki
What's hot
(20)
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
GitOpsでKubernetesのManifest管理
GitOpsでKubernetesのManifest管理
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
MySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれや
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
コア・コンテキスト管理 - FIWARE WednesdayWebinars
コア・コンテキスト管理 - FIWARE WednesdayWebinars
浸透するサーバーレス 実際に見るユースケースと実装パターン
浸透するサーバーレス 実際に見るユースケースと実装パターン
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(1)-アーキテクチャ、データソース
2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(1)-アーキテクチャ、データソース
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
OCamlでWebアプリケーションを作るn個の方法
OCamlでWebアプリケーションを作るn個の方法
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分け
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
PHPでマルチスレッド
PHPでマルチスレッド
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話
ソフトウェアパターン概論およびパターンを活用したアーキテクチャ設計
ソフトウェアパターン概論およびパターンを活用したアーキテクチャ設計
Similar to REST APIに入門する。
Restful Web Service Ch2
Restful Web Service Ch2
kunit
WebSocketを学ぼう!
WebSocketを学ぼう!
Katsuki Chousa
Lesson01
Lesson01
MRI
Yahoo!検索のパフォーマンス向上策全て見せます
Yahoo!検索のパフォーマンス向上策全て見せます
Yahoo!デベロッパーネットワーク
45分で理解する webクローリング入門 斉藤之雄
45分で理解する webクローリング入門 斉藤之雄
Yukio Saito
[BurpSuiteJapan]HTTP基礎入門
[BurpSuiteJapan]HTTP基礎入門
Burp Suite Japan User Group
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
Webページが表示されるまで
Webページが表示されるまで
Masataka Suzuki
HTTP入門
HTTP入門
Sho A
Webプログラミング入門
Webプログラミング入門
Tsuyoshi Kiryu
Webプログラミング入門
Webプログラミング入門
SI TEAM
サーバーの初歩的な話セミナー@大阪20120901
サーバーの初歩的な話セミナー@大阪20120901
Masayuki Abe
20050809
20050809
小野 修司
非エンジニアカンファレンス資料の抜粋
非エンジニアカンファレンス資料の抜粋
div Inc
Sales chat
Sales chat
CRI Japan, Inc.
HTTP入門
HTTP入門
Sota Sugiura
Rest ful api設計入門
Rest ful api設計入門
Monstar Lab Inc.
WTM52 あなたの作ったWEBサイト、生きてますか?
WTM52 あなたの作ったWEBサイト、生きてますか?
Masanori Oobayashi
20110622 haruyama webso]cket
20110622 haruyama webso]cket
Makoto Haruyama
Web ブラウザの仕組み
Web ブラウザの仕組み
lufe
Similar to REST APIに入門する。
(20)
Restful Web Service Ch2
Restful Web Service Ch2
WebSocketを学ぼう!
WebSocketを学ぼう!
Lesson01
Lesson01
Yahoo!検索のパフォーマンス向上策全て見せます
Yahoo!検索のパフォーマンス向上策全て見せます
45分で理解する webクローリング入門 斉藤之雄
45分で理解する webクローリング入門 斉藤之雄
[BurpSuiteJapan]HTTP基礎入門
[BurpSuiteJapan]HTTP基礎入門
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Webページが表示されるまで
Webページが表示されるまで
HTTP入門
HTTP入門
Webプログラミング入門
Webプログラミング入門
Webプログラミング入門
Webプログラミング入門
サーバーの初歩的な話セミナー@大阪20120901
サーバーの初歩的な話セミナー@大阪20120901
20050809
20050809
非エンジニアカンファレンス資料の抜粋
非エンジニアカンファレンス資料の抜粋
Sales chat
Sales chat
HTTP入門
HTTP入門
Rest ful api設計入門
Rest ful api設計入門
WTM52 あなたの作ったWEBサイト、生きてますか?
WTM52 あなたの作ったWEBサイト、生きてますか?
20110622 haruyama webso]cket
20110622 haruyama webso]cket
Web ブラウザの仕組み
Web ブラウザの仕組み
REST APIに入門する。
1.
に入門する 1
2.
目的 2
3.
の基本知識を身につけて 成長を加速させる 3 ※こういう勉強会、インターン主導でやれるようになりたいね
4.
今日の流れ 通信の仕組みについて とは? とは? 実践的な設計手法 おまけ 4
5.
について話す前に 5
6.
での通信でやっていること 6 1. 〇〇の記事一覧が ほしい! 2. 〇〇の記事一覧を 返すね ウェブサーバー
7.
用語 7 ウェブサーバー HTTPリクエスト(Request) HTTPレスポンス(Response)
8.
ブラウザなどのクライアントと サーバーとのや り取りにおける決まりごと(プロトコル) 8 1. 〇〇の記事一覧 が、ほしい! 2.
〇〇の記事一覧を 返すね ウェブ サーバー HTTP この全体のやり取りが
9.
リクエストの例 ・リクエスト対象( ) ・ メソッド ・クライアントの情報 などの内容を持つ 9
10.
10 ウェブ上でのアドレスを指し示す識別子 プロトコル サーバー名 パス
11.
メソッド で定義されているメソッド。 で示すリソースに対して、何を行うかで利用するメソッドを選定 HTTPメソッド 意味 GET リソースの取得 POST
リソースの作成 PUT リソースの更新 DELETE リソースの削除 PATCH リソースの部分更新 11
12.
レスポンスの例 ・ステータスコード ・ステータス文字列 ・ のバージョン などの内容を持つ 12
13.
ステータスコード 処理の実行結果を数値で表現 ・ 系は成功 ・ 系はクライアント系のエラー ・
系はサーバーサイドのエラー 13
14.
ステータスコード HTTPステータスコード 意味 200 OK リクエストに成功し、情報とともにレスポンス を返す場合 201
CREATED リクエストに成功し、新しく作成されたリソースを返す 場合 400 BAD REQUEST 定義されてないメソッドを使用した場合や、 リクエストのフォーマットがおかしい。 401 UNAUTHORIzED 認証が必要な場合 403 FORBIDDEN リソースへのアクセスが拒否された場合 404 NOT FOUND リソースが見つからなかった場合 500 INTERNAL SERVER ERROR サーバ内部エラーの場合 14
15.
での通信 まとめ 15 GET /articles HTTP/2 HTTP/2
200 OK ウェブサーバー HTTP リクエスト HTTP レスポンス
16.
1
17.
17 とは、他のプログラムから利用するためにソフ トウェアの機能を共有すること によって、アプリケーション同士で連携すること が可能になる。
18.
18 は、 の中でも特に、 で通信することを前提とした 。 例えば、スマホアプリがサーバーとやり取り するときにも
を利用するのが一般的。
19.
の設計手法 最近はほとんどみない 主流 最近、 が開発 19
20.
とは? 20
21.
とは 美しい設計 今から説明します の原則に従った を
と呼ぶ 21
22.
とリクエストを設計する 22
23.
再掲 リクエストの例 ・リクエスト対象( ) ・
メソッド ・クライアントの情報 などの内容を持つ 23
24.
基本的な の設計 覚えやすく、どんな機能をもつ なのかひと目でわかる ・短くて入力しやすい ・人間が読んで理解できる ・大文字小文字が混在してない ・改造しやすい ・サーバー側のアーキテクチャが反映されてない 24
25.
短くて入力しやすい BAD http://api.example.com/service/api/search GOOD http://api.example.com/search 25
26.
人間が読んで理解できる BAD http://api.example.com/sv/u http://api.example.com/productos/12345 http://api.example.com/seihin/12345 GOOD http://api.example.com/products/12345 26
27.
大・小文字が混在していない BAD http://api.example.com/Users/12345 http://api.example.com/API/getUserName GOOD http://api.example.com/users/12345 27
28.
改造しやすい BAD http://api.example.com/items/alpha/1 http://api.example.com/items/beta/10 http://api.example.com/items/gamma/20 GOOD http://api.example.com/items/12 28
29.
ルールが統一された BAD http://api.example.com/friends?id=100 http://api.example.com/friends/100/messages GOOD http://api.example/com/friends/100 http://api.example.com/friends/100/messages 29
30.
メソッドを使った設計 ・名詞で構成 表現するのはあくまでもリソースでありアクションではない のパス内に動詞は存在しないのが基本 ・取得、作成、削除、修正、したいのかは のメソッドで指定 GET api.example.com/v1/users GET
api.example.com/v1/users/1/messages POST api.example.com/v1/users 30
31.
をバージョンで管理する 別のエンドポイントを作成する 古い はの残す 市場に出ている古いバージョンのクライアン トに対応 バージョン管理できる設計にしとくのが大事 31
32.
レスポンスを設計する 32
33.
再掲 レスポンスの例 ・ステータスコード ・ステータス文字列 ・ のバージョン などの内容を持つ 33
34.
データ・フォーマット 34
35.
35
36.
36 テキストベースのフォーマット 簡潔で構造化されてる ほぼすべての言語に が存在
37.
データの内部構造 リソースの抽出 のテーブルをそのまま公開しない のアクセス回数がなるべく少なく 37
38.
データの内部構造 38 { friends: [ 123123, 32323, 24343, 88482, //.. ] } { friends: [ { “id”:
123123, “name”: “Kazushi”, “job”: “engineer”, }, { “id”: 32323, “name”: “Iwark”, “job”: “CTO”, }, //.. ] }
39.
各データのフォーマット 39 スネークケース キャメルケース 性別のデータをどう表すか 日付のデータをどう表すか などなど
40.
エラーの表現 ステータスコードでエラーを表現する エラーの詳細をクライアントに返す 40
41.
エラーの詳細 41 // Twitter { error: [ { “message”:
“Bad Request”, “code”: 400 } ] } // Github { message: “Not Found’, documentation_url: ‘https://www.developer.git..“ }
42.
おまけ 42
43.
43
44.
最後に 44
45.
アンケート 45
46.
需要があれば 中級編 かっこいい コマンド データベース 入門 関数型プログラミング
入門 なんでも 46
Download now