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?

API設計で api/v1 フォルダを作成する理由

Last updated at Posted at 2024-12-20

API設計で api/v1 フォルダを作成する理由

1. バージョニング(APIのバージョン管理)のため

バージョニングとは何か? APIを公開すると、機能の追加や変更が頻繁に行われます。既存のクライアントに影響を与えず、新しい機能や仕様を提供するためには「バージョン管理」が必要です。

例えば、v1 では在庫情報をシンプルな形式で返していたとします。
新しいクライアントが増え、データ形式を変更する必要がある場合、v2 を作成して新しい形式を提供できます。
古いクライアントは v1 を使い続けることで影響を受けません。
このバージョン管理を行うために、api/v1 というディレクトリ構造を採用します。

2. コードの整理・可読性向上のため

目的ごとのフォルダ分け APIにはさまざまなリソース(例: ユーザー、在庫、注文)が存在します。それぞれのリソースに対応するコントローラーが増えると、1つのフォルダにまとめると非常に管理が難しくなります。

例: フォルダが1層の場合

app/controllers/
├── inventory_controller.rb
├── users_controller.rb
├── orders_controller.rb
└── other_controller.rb

→ コントローラーが増えると、全てが app/controllers 直下に配置され、混乱を招きます。

フォルダを分けた場合

app/controllers/api/v1/
├── inventory_controller.rb
├── users_controller.rb
└── orders_controller.rb

→ APIのエンドポイントを明確にグループ化でき、管理しやすくなります。

3. エンドポイント構造との一致性

APIクライアントから見たとき、URLが以下のようになります。

/inventory(フラット構造)→ バージョン管理がなく、将来の変更が困難。
/api/v1/inventory(階層構造)→ 明確にバージョン管理されており、将来の拡張に柔軟。

このURL構造に合わせてディレクトリを整理することで、URLとディレクトリ構造の対応がわかりやすくなります。

4. RESTful設計の原則に従うため

RESTful設計では、リソースごとに明確なエンドポイントを定義し、それに対応するコントローラーを設けることが推奨されます。

api/v1/inventory_controller.rb は、/api/v1/inventory に対応。
api/v1/users_controller.rb は、/api/v1/users に対応。

これにより、APIの設計が標準的で再利用しやすいものになります。

まとめ: なぜ api/v1 フォルダを作成するのか?

将来の変更や機能追加に備えるためのバージョニング管理
コードの整理と可読性を向上させるため
エンドポイント構造との一貫性を保つため
RESTful設計に基づいた標準的なAPIを実現するため
このような理由から、api/v1 フォルダを作成して、その中にコントローラーを配置するのが良い設計とされています。エンドポイントの実装やテストを行う際にも、これが基本になります。

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?