1
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の基本構造とURL・認証まわりを整理してみた

1
Last updated at Posted at 2025-07-17

1. はじめに

「Web APIって何となく使ってはいるけど、実はよくわかってない…」という状態を抜け出すため、Web APIの基本(URLの構造・設計、パラメータの扱い、認証など)を、自分なりに整理・復習する目的でまとめてみました。
同じようにAPIの構造に苦手意識のある方の参考にもなれば嬉しいです。

2. URL構造の基本

URLはプロトコル・ホスト・パスから成り立ちます。

スクリーンショット 2025-07-16 22.43.25.png

もっと分解するとこんな感じ

スクリーンショット 2025-07-16 23.12.55.png

URLには他にも、ポート・クエリ・フラグメントが含まれることがあります。
フラグメントはURLの末尾にある #〇〇 の部分で、ページ内の特定の場所を示すものです。

スクリーンショット 2025-07-17 0.13.18.png

[補足] URLとURIの違い

URLはURIの一種。URNというものもある。

種類 説明
URI (Uniform Resource Identifier) インターネット上のリソースを一意に識別するための総称。URLやURNを含む上位概念。 https://example.com/users/123
urn:isbn:978-4-00-000000-0
URL (Uniform Resource Locator) リソースの「場所(アクセス方法と所在)」を示す識別子。実際にアクセス可能で、Web APIなどで主に使われる。 https://example.com/users/123
URN (Uniform Resource Name) リソースの「名前」のみを示す識別子。場所は含まず、永続的かつ不変なIDとして扱われる。 urn:isbn:978-4-00-000000-0

3. クエリパラメータとパスパラメータの違い

APIでは、URLの中に値を埋め込む方法として「パスパラメータ」と「クエリパラメータ」があります。
パスパラメータはリソースの位置、クエリパラメータは取得条件として利用します。
/users/123/posts?sort=desc&page=2のように両方を組み合わせることも可能です。

比較項目 パスパラメータ クエリパラメータ
書き方 /users/123 /users?id=123
使う場面 リソースを一意に識別 検索・絞り込み・ページングなど

4. RESTful APIのURL設計

ここまででURLの構造や各要素について整理しました。
では、実際にWeb APIを設計・利用するときは、どのようにURLを組み立てるべきか、というポイントをまとめてみました。

URLは一度公開すると変更が難しいため、なるべくシンプルで、変わりにくい構造にすることが重要です。

  • プログラミング言語や拡張子に依存しない
    • 例:/users.json/data.php のような形式は避ける。実装言語やデータ形式が変わったときに影響が出てしまうため
  • 操作名(メソッド名を含めない)
    • 例:/getUserInfo/deleteUser のように、処理を表す動詞をURLに入れない。
      操作はHTTPメソッド(GET, POSTなど)で表現するのがREST的
  • セッションIDやAPIキーなど、セキュリティに関わる情報を含めない
    • 例:/users/123?sessionid=abcd1234 のようなURLは、ログやブラウザ履歴に残ってしまうリスクがある
  • 読みやすく、直感的に理解できるものにする
    • 例:/users/123/posts のように、リソースと関係性が分かる構造が望ましい

5. 認証付きAPIリクエストの例

APIには、アクセス制限のための「認証」が必要な場合があります。
ここでは基本的な「Basic認証」の仕組みと、具体的な使い方について学んだことをまとめます。

Basic認証

Basic認証は、ユーザー名とパスワードを組み合わせて認証する仕組みです。
以下のように、URLの中に認証情報を含める方法もありますが、パスワードがURLとして露出してしまうため非推奨。
https://user:password@api.example.com/users/123

パスワードをURLに含めず、リクエストヘッダーに Authorization を含めて、サーバーに送信するのが基本です。

# curlコマンドでの実行例

curl -u user:password https://api.example.com/users/123

6. 参考書籍

1
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
1
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?