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?

WEB APIを基本からまとめてみた【基礎・基本設計】

Last updated at Posted at 2025-09-06

WEBの基礎

WEB APIとは?

  • API = Application Programming Interface
  • 異なるアプリケーションとアプリケーションが互いにプログラミングを通して機械的に通信してやり取りができるようにすること
  • WEB APIを使うことでPCとスマホのどちらの環境でも簡単にサービスを展開することができる

image.png

WEB APIの種類

REST API ⇨ シンプル

  • URLとメソッドでデータを扱うシンプルな仕組み
  • 幅広い言語やツールでサポート
  • 多くのWebサービスで最も一般的
  • HTTPに測ったシンプル設計

GraphQL ⇨ 柔軟

  • 1つのエンドポイントで完結
  • 違う情報を効率よく取得できるが実装はやや複雑
  • フロントエンドとサーバ間のやり取りを柔軟に最適化可能

gRPC ⇨ ハイパフォーマンス

  • バイナリ形式で高速通信が可能
  • 多言語間のデータ交換がしやすく高負荷分散システムにも強い
  • 設定に手間はかかるがパフォーマンス重視の場面で力を発揮

HTTP

HTTPの基本

  • HTTPとは、「Hypertext Transfer Protocol(ハイパーテキスト・トランスファー・プロトコル)」の略で、ウェブ上でデータをやり取りするための通信規約(ルール)のこと

  • HTTPプロトコルとは、Web上でデータがやり取りされる際のルールを定めたもの

REST API

REST APIとは?

  • REST = WEBが大規模に機能する要因を整理した"設計ガイドライン"

REST の制約

  • クライアント・サーバ : クライアントとサーバを分離することで関心を分離する
    ※クライアントは見た目(UI)にサーバはデータの保存と操作にそれぞれ責任を持つ

  • ステートレス : リクエストは、必要な全ての情報を含んでいる

  • 統一インターフェース : ルールを統一することで異なるアーキテクチャ間の通信を簡単にする

  • キャッシュ : レスポンスは、キャッシュ可能かどうかを示す

  • 階層化システム : 各コンポーネントは、隣接する階層以外のコンポーネントを『見る』ことができない

  • コードオンデマンド(任意) : クライアントで実行可能なコードがクライアントの機能拡張を可能にする

WEB APIの基本設計

リソース指向の考え方

メソッド  エンドポイント(URI)
GET     /repos/{owner}/{repo}/branches

HTTPメソッド

  • GET:リソースを取得する
  • POST:リソースを新規作成する
  • PUT:リソースを更新する
  • PATCH:リソースを部分的に更新する
  • DELETE:リソースを削除する

エンドポイント設計

  • エンドポイントは小文字の英字を使う
  • エンドポイントに日本語は使わない
  • 複数単語を繋げる場合、ハイフン繋ぎが無難

例) CATEGORIES

メソッド エンドポイント 説明
GET /categories カテゴリ一覧を取得
POST /categories 新しいカテゴリを作成
(管理者用)
GET /categories/{categoryId} カテゴリの詳細を取得
PUT /categories/{categoryId} カテゴリの詳細を編集
(管理者用)
DELETE /categories/{categoryId} カテゴリの詳細を削除
(管理者用)
GET /categories/{categoryId}/products 特定カテゴリに属する商品の一覧を取得

※リソースを一位に特定する際にはエンドポイントにIDを追加する

リクエスト・レスポンスのデータ設計

  • リクエスト・レスポンスデータともにJSONフォーマットで統一する
  • 1つのレンポンスデータに全部の情報を入れようとしない

STATUS CODEの設計

  • 2XX : 成功
  • 3XX : リダイレクト
  • 4XX : クライアントエラー(リクエストに問題)
  • 5XX : サーバーエラー(サーバーに問題)

WEB APIとキャッシュ

説明
max-age=<秒数> キャッシュの有効期限を秒単位で指定
no-shote キャッシュそのものを禁止
no-cache キャッシュされるが、使用前に必ずサーバーで再検証を行う
must-revalidate キャッシュが期限切れの場合、必ずサーバーに再検証を要求する
state-while-revalidate=<秒数> キャッシュが期限切れの場合でも、再検証中にそのキャッシュを利用可能な秒数を指定
public レスポンスを全てのキャッシュ(クライアント、プロシキ、CDNなど)で保存を可能にする
private レスポンスをクライアント専用にし、中間キャッシュ(プロシキ、CDN)では保存不可にする
s-maxage キャッシュの有効期限を秒単位で指定。中間キャッシュ向け

参考サイト

ゼロから学ぶ WebAPI 開発:設計・実装・運用の基本
『教えてヒロさん!』~自律分散システムはWeb 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?