HTTP APIとREST APIの違いについて調べたのでまとめました。
1. HTTP APIとは
HTTP APIは、HTTPプロトコルを使用してクライアントとサーバー間で通信を行うためのAPIの総称です。
GET, POST, PUT, DELETEなどのHTTPメソッドを使ってデータを送受信します。
- 特徴:
- HTTPプロトコルを使用していれば、RESTの設計原則に準拠していなくてもHTTP APIと呼ばれます。
- 柔軟で制約が少なく、REST以外の設計(RPCなど)も可能です。
2. REST APIとは
REST API(Representational State Transfer)は、HTTP APIの一種で、特定の設計原則(RESTの原則)に従ったアーキテクチャスタイルです。
- 特徴:
- リソース指向の設計
- ステートレス: 各リクエストはサーバー側に状態を保持しない。
- 一貫したインターフェース(HTTPメソッドをリソース操作に適切にマッピング)
3. HTTP API と REST API の比較表
観点 | HTTP API | REST API |
---|---|---|
設計ルール | 特に定まったルールはなく自由に設計可能 | RESTの設計原則に従う必要がある。 |
リソース指向 | リソースに限定されない設計が可能(例: RPC) | リソース(例: /users , /products )が中心 |
HTTPメソッド | 任意の使い方が可能 | GET, POST, PUT, DELETE などがリソース操作に対応 |
柔軟性 | 非常に柔軟で、REST以外のデザインも可能 | RESTの原則に準拠するため、自由度はやや低い。 |
キャッシュ | 任意で設定可能 | キャッシュが設計の一部として考慮される。 |
ステートレス性 | 必須ではない | 必須(サーバー側でクライアントの状態を保持しない) |
統一性 | API間で統一されないこともある。 | 一貫したインターフェース設計が必須 |
効率性 | 高速で最適化しやすい。 | RESTのルールに縛られるため効率性が劣る場合がある。 |
使用例 | AWS API GatewayのHTTP APIなど | AWS API GatewayのREST API、RESTfulサービスなど |
4. AWS API Gateway における違い
HTTP API
- 特徴:
- シンプルで高速、低コスト
- REST以外の設計も可能
- WebSocket APIやAWSサービスへのルーティングに適している。
- 推奨用途:
- ライトウェイトなサービス
- WebSocket API
- パフォーマンスやコストを重視する場合に適している。
REST API
- 特徴:
- REST原則に準拠
- 監視、トラフィック制御、認証機能などが充実している。
- 推奨用途:
- RESTful設計が必要な場合
- 高度な監視やトラフィック制御が必要な場合に適している。
5. まとめ
- HTTP API:
- 柔軟でREST以外の設計にも対応可能
- 非リソース指向のRPCやWebSocket APIでも利用可能
- REST API:
- リソース指向設計が中心で、統一されたインターフェースを提供している。
- RESTの原則に準拠し、ステートレス性やキャッシュ性が重視される。
どちらを選択するかは、アプリケーションの要件や設計方針に応じて決定する必要があります。
今回はここまでです。