LoginSignup
0
0

REST APIについて

Last updated at Posted at 2024-04-20

REST APIとは

REST API(Representational State Transfer Application Programming Interface)は、クライアントとサーバー間の通信を可能にするアーキテクチャスタイルの一つです。REST APIは、HTTPプロトコルを使用してデータを送受信し、リソース(例: データや機能)を操作するための一般的な手法を提供します。

REST原則

設計設定には以下のものがあります

クライアント/サーバー

  • 画面(UI)とデータで関心事を分離
  • クライアント側がトリガー、サーバー側が受け身

階層化システム

  • 多層アーキテクチャ構成
  • メリット
    • コンポーネントに役割を決めて独立させることで進化と再利用がそくしんできる
  • デメリット
    • データ処理時にオーバーヘッドが発生するのでユーザーから見ると応答が悪く見える

コードオンデマンド

  • クライアントコードをダウンロードして実行できる
  • メリット
    • リリース済みのクライアントに対して機能追加ができる
    • サーバーの負荷が下がる
  • デメリット
    * 多数のブラウザなど評価環境が複雑になる

統一インターフェース

  • メリット
    • システムアーキテクチャ全体が簡素化されてわかりやすくなる
    • 提供するサービスに集中でき独自の進化ができる
    • 異なるブラウザでも同じような画面を表現できる
  • デメリット
    • 標準化によって効率が犠牲になる
リソース(名前がつけられるあらゆるもの)の識別
  • URIを用いてサーバーに保存されたデータを識別する
  • URIに動作は含まない
表現を用いたリソース操作
  • 断面情報を利用してサーバー上のデータを操作する
自己記述メッセージ
  • メッセージ内容が何であるか、ヘッダーに記述されている
HATEOS
  • 検索結果ページにおける次のページ

ステートレス

  • 前の状態を保存しない
  • それぞれの会話が単独で成り立つ
  • サーバーはリクエストだけでコンテキストを理解できる
  • メリット
    • 監視が容易
    • 障害復旧が容易
    • スケールが容易
  • デメリット
    • リクエストデータに重複がある
    • アプリを複数バージョン同時ていきょうし、状態をクライアントに置いておくとアプリ制御が複雑になる

キャッシュ制御

  • クライアントはレスポンスをキャッシュできる
  • メリット
    • ユーザー体験の向上
    • リソース効率の向上
    • 拡張性の向上
  • デメリット
    • 古いデータを戻してしまうとシステムに対する信用性の低下につながる

URI設計

URI(Uniform Resource Identifier)を設計する際に考慮すべき主要な要素は以下の通りです

1. リソースの識別性

URIは一意のリソースを識別するためのものでなければなりません。リソースの識別性を確保することで、クライアントが正確なリソースにアクセスできます。
例: /movies/{movie_id}

2. リソース階層の表現

リソースが階層的に組織されている場合、URIにその階層構造を反映することが重要です。これにより、リソースの関係性や階層構造を理解しやすくなります。
例: /genres/{genre_id}/movies/{movie_id}

3. クエリパラメータの利用

URIに含まれるパラメータは、リソースのフィルタリングやページネーションなどの目的で使用されます。必要な場合には、クエリパラメータを使用してリクエストを細かく制御できます。
例: /movies?genre=action&year=2022&page=1

4. RESTfulな命名規則の遵守

URIはRESTfulな命名規則に従って命名されるべきです。リソースの名前付けや操作の表現には、一貫性が重要です。
例: /movies(複数形)、GET /movies/{movie_id}(リソースの取得)

5. ユーザーフレンドリーな設計

URIは理解しやすく、記憶しやすい形式で設計する必要があります。また、冗長性を避け、シンプルで直感的な命名を心がけると良いでしょう。
例: /movies/{movie_id}(映画の一意の識別子を含む)
これらの要素を考慮して、URIを設計することで、システムの可読性、保守性、拡張性が向上し、クライアントとサーバー間の通信が効率的に行われます。

REST APIで使われるHTTPメソッド

REST APIで映画(movie)をリソースとしてCRUD操作を行うためのURIとHTTPメソッドの定義です

URI HTTPメソッド 内容
/movies GET 映画一覧取得
/movies POST 新しい映画の追加
/movies/{movie_id} GET 特定の映画情報取得
/movies/{movie_id} PUT 映画情報の更新
/movies/{movie_id} DELETE 映画の削除

{movie_id}は映画の一意の識別子です。

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