0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

REST APIについて

Posted at

✅ そもそもWebって何?

● ざっくり言うと

Webとは「パソコンやスマホ(クライアント)」と「情報を持っているサーバー」がやり取りする仕組みです。

● 実際の流れ(例:YouTubeを開くとき)

  1. Chrome(クライアント)が「YouTube見せて」とサーバーにお願い
  2. YouTubeのサーバーが「はいよ、これHTMLと動画データね!」と返す
  3. Chromeがそれを受け取り、ページを表示してくれる

🛠 Webを支える技術

技術 なにしてる? 具体例
HTTP 情報のやり取りルール(言語) Webページを取得する仕組み
HTML/CSS/JS ページの構造・見た目・動きを作る ブログ、ショッピングサイトなど
URL Web上の住所 https://example.com
Webサーバー 情報を提供する側 Apache、Nginxなど
ブラウザ Webページを表示する側 Chrome, Safari など

🌍 WebサイトとWebサービスの違い

種類 内容
Webサイト 読むだけ。情報提供が目的 Wikipedia、ブログなど
Webサービス 操作する・使う。課題解決が目的 Amazon、YouTube、Gmailなど

🔗 APIとは?WebAPIとは?

● APIとは

アプリやサービス同士が「情報ちょうだい!」「これやって!」と話すための仕組みです。

  • API = Application Programming Interface
  • Interface:つなぐ仕組み(人ではなく機械同士の会話)

● WebAPIとは

  • Web(インターネット)を通じて使うAPI
  • 人ではなくプログラムが使うWeb
  • HTMLではなくJSONでやり取りされる

📌 たとえば…

  • Google Maps APIを使えば、アプリに地図を表示できる
  • Twitter APIを使えば、アプリからツイート一覧を取得できる

🚀 WebAPIのメリット

  • 他の人(開発者)が自分のサービスを拡張してくれる
  • → 「APIエコノミー(APIを使った成長)」

実例:Twitter

  • WebAPIを公開
  • サードパーティ製アプリがどんどん便利に
  • 利用者もどんどん増加!

⚠ WebAPI公開のリスクと対策

リスク 内容 対策・実例
収益の損失 非公式アプリにユーザーが流れる TweetbotなどにAPI制限
サーバー負荷 アクセス集中 GitHub APIにレート制限導入
不正利用 偽物アプリで誤情報・ブランド低下 APIキー+不正遮断+利用規約整備

📡 HTTP通信の中身

● リクエスト(クライアント → サーバー)

リクエストライン:HTTPメソッド、URI、HTTPバージョンを記載しサーバーへの指示を送る

POST /users HTTP/1.1


ヘッダー:サーバーに対する追加情報(メタ情報)を送信
Host: api.example.com
Content-Type: application/json
Authorization: Bearer xyz

ボディ:サーバーに送りたい「実データ」
{
  "name": "Taro",
  "age": 20
}      
  • POST: データ登録
  • GET: データ取得
  • PUT: データ更新
  • DELETE: データ削除

● レスポンス(サーバー → クライアント)

ステータスリンク:リクエストの処理結果を示す
HTTP/1.1 200 OK


ヘッダー:メタ情報(データの形式や長さなど)
Content-Type: application/json
Content-Length: 48
Date: Mon, 27 May 2025


ボディ:リクエストに返す実際のデータ(HTML, JSONなど)
{ "id": 1, "title": "映画タイトル" }

🛡 RESTの原則

RESTとは「Webの仕組みに沿った設計スタイル」で、以下の6つの原則を守ることが重要です。

1. クライアント/サーバー

  • 役割を分離(UIとデータ処理を分ける)
  • クライアントは表示と操作、サーバーは処理と返答

2. ステートレス(状態を保持しない)

  • サーバーは「前回のリクエストの状態」を記憶しない
  • すべてのリクエストは自己完結している必要がある

✅ メリット

メリット 内容
スケーラビリティ サーバーを追加しやすい
シンプルな実装 状態を覚える必要がない
障害に強い 状態に依存しないので復元しやすい

✅ 実装方法

実践内容 説明
認証情報を毎回送る JWTトークンやAPIキーを利用
セッションを持たない クライアント側で状態を管理
必要なデータを毎回含める 前の処理に依存させない

3. キャッシュ制御

  • サーバーがデータの再利用を許可すれば、クライアントが保存して再表示できる
  • ヘッダー:Cache-Control, ETag, Last-Modified などで管理

4. 統一インターフェース

「どのリソースも同じ操作ルールに従う」こと。

サブ原則

原則 内容
リソースの識別 URIで一意に識別する(例:/users/123)
リソースの操作 HTTPメソッドで行う(GET/POST/PUT/DELETE)
自己記述的メッセージ ヘッダーに必要な情報を含める(例:Content-Type)
HATEOAS レスポンスに次のリンクを含めて状態遷移を促す

5. 階層化システム

  • クライアントは中間サーバー(キャッシュ、ゲートウェイ)を意識しない
  • ロードバランサーや認証層を挟むことでセキュリティとスケーラビリティ向上

6. コードオンデマンド(任意の原則)

  • 必要に応じてサーバーからコードを配信し、クライアントがそれを実行
  • 例:バリデーションロジックをJavaScriptで配信

最後に

今回の記事では、REST APIとは何かについてイメージをつかむことを目的に、概要を中心に解説しました。
ステータスコードなど、REST APIには他にも多くの重要な要素がありますが、まずは全体像を把握することが理解の第一歩になります。

REST APIの基本的な考え方をつかんでおくことで、今後学ぶ詳細な内容もスムーズに頭に入ってくるはずです。
ぜひ、参考として一読いただければ嬉しく思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?