「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > REST API の設計と命名規則のガイド

REST API の設計と命名規則のガイド

2024 年 11 月 6 日に公開
ブラウズ:810

Guide to REST API Design and Naming Conventions

RESTful APIを効果的に設計することは、スケーラブルで保守可能で使いやすいシステムを作成するために重要です。特定の標準は存在しますが、多くは厳密なルールではなく、API 設計の指針となるベスト プラクティスです。 API で広く使用されているアーキテクチャ パターンの 1 つは MVC (Model-View-Controller) ですが、これだけでは名前や構造などの API 設計のより細かい側面には対応していません。この記事では、REST API を構築するための重要なガイドラインについて説明します。

  1. 命名規則とリソース指向設計 API は多くの場合、「ユーザー」、「製品」、「注文」など、システム内のエンティティを表すリソースを中心に定義されます。リソースは単一のアイテムまたはコレクションにすることができ、API はこれらのリソースと対話するための直感的かつ明確な方法を提供する必要があります。

主要原則:
リソース指向: アクションではなくリソースを中心に API を設計します。リソースは動詞ではなく名詞として考える必要があります。例えば:

ユーザーのコレクションにアクセスするための

/users。
特定のユーザーにアクセスするための /users/{userId}。
一貫性: API は直感的である必要があります。ユーザーが /users からリソースのリストを取得できる場合は、識別子 /users/{userId}.

を追加することで個々のリソースを取得できることを期待する必要があります。

コレクションと単一リソース:

リソースのコレクションは複数名詞で表されます: /users、/products.
単一のリソースは、そのリソースの一意の識別子を追加することによって表されます: /users/{userId}、/products/{productId}.

  1. HTTP メソッドは URI ではなくアクションを定義します 実行中のアクション (データの取得、新しいエントリの作成、既存のデータの更新など) を URI に埋め込むべきではありません。代わりに、HTTP メソッドがアクションを決定します。

一般的な HTTP メソッドとその使用例:
GET: サーバーからデータを取得します。

例: GET /products はすべての製品のリストを返します。
例: GET /users/{userId} は、指定された userId を持つユーザーを取得します。
POST: サーバー上に新しいリソースを作成します。

例: POST /users は新しいユーザーを作成します。
PUT: 既存のリソースを新しいデータに置き換えます (完全な更新)。

例: PUT /users/{userId} は、ユーザーのデータを新しいデータに完全に置き換えます。
PATCH: 既存のリソースを部分的に更新します (部分更新)。

例: PATCH /users/{userId} は、電話番号などの指定された属性のみを更新します。
DELETE: リソースを削除します。

例: DELETE /users/{userId} は、指定された userId を持つユーザーを削除します。

  1. REST におけるステートレス REST API はステートレスである必要があります。つまり、すべての API 呼び出しには、サーバーがリクエストを処理するために必要なすべての情報が含まれている必要があります。これにより、各リクエストが自立し、前のリクエストに依存しないことが保証されます。

例: ユーザーの詳細を取得する GET リクエストを作成する場合、前のリクエストでユーザーがすでに認証されている場合でも、リクエストには必要な認証トークンが含まれている必要があります。これは、異なるリクエストが異なるサーバーに到達する可能性がある分散システムでは不可欠です。

  1. サーバー固有のデータ ストレージを回避する 単一の API リクエストは、特定のサーバーに一時データを保存することに依存すべきではありません。分散システムでは、受信リクエストは任意のサーバーにルーティングされる可能性があるため、どのサーバーがリクエストを処理するかに関係なく、同じ結果が得られるはずです。これが、セッション状態を個々のサーバーに保存すべきではない理由です。

解決策: セッション管理には、Redis などの集中型または分散型ストレージ システム、または JWT (JSON Web Token) などのステートレス認証メカニズムを使用します。

  1. リソース テーブルとデータベース テーブル API の設計では、データベース テーブルと API エンドポイントの間に 1 対 1 のマッピングを含めるべきではありません。 API は、複数のテーブルまたはソースからのデータを結合できる論理的で意味のあるリソースを公開する必要があります。

例:
GET /orders/{orderId} は、orders、order_items、customers テーブルからの情報を組み合わせて、注文の詳細を取得する場合があります。

  1. データ型の柔軟性 REST API は、データベースのデータ型やテーブル構造に制約されません。 API コンシューマーに最適なサービスを提供する方法で応答を構成できます。 JSON が最も一般的に使用される形式ですが、必要に応じて XML や CSV などの他の形式でデータを自由に返すことができます。

例: GET /reports/{reportId} エンドポイントは、リクエスト内のクエリ パラメーターまたはヘッダーに基づいて、さまざまな形式 (JSON、CSV、PDF) でレポートを返す場合があります。
API 構造の例
これらすべての原則を結び付けるために、これらのベスト プラクティスに従ったサンプル API 構造を次に示します。

GET /products: すべての製品を取得します。
GET /products/{productId}: 特定の製品の詳細を取得します。
POST /products: 新しい製品を作成します。
PUT /products/{productId}: 製品を productId に置き換えます。
PATCH /products/{productId}: 製品を部分的に更新します。
DELETE /products/{productId}: 製品を削除します。
この構造では、リソースが明確に定義され、HTTP メソッドによって実行されるアクションが指定され、クリーンで直感的な API が保証されます。

**結論
**RESTful API の設計には、ルートの作成と HTTP メソッドの処理だけではありません。リソースに焦点を当て、アクションに HTTP メソッドを活用し、ステートレス性を遵守することで、直感的で保守可能でスケーラブルな API を作成できます。 API は柔軟であり、特定のデータベース構造から独立している必要があり、システムの成長に合わせてより適応できるようにする必要があることに注意してください。

これらの規則に従うことで、API 設計が効率的かつユーザーフレンドリーになるため、最終的に API の開発者と利用者の両方のエクスペリエンスが向上します。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/rahul_ranjan_7200/guide-to-rest-api-design-and-naming-conventions-46co?1 侵害がある場合は、削除するために[email protected]に連絡してください。それ
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3