HTML

APIのタイプ - HTML

APIのタイプは、REST、GraphQL、SOAP、gRPC、WebSocketなど、現代のソフトウェア開発で広く使用されているWeb APIのアーキテクチャスタイルとプロトコルを分類したものです。各タイプは異なる通信パターン、データ形式、ユースケースに対応しており、システム間のデータ交換を実現するための基盤となっています。適切なAPIタイプの選択は、システムの性能、スケーラビリティ、開発効率に大きな影響を与えます。

API REST GraphQL SOAP gRPC WebSocket Webサービス 通信プロトコル
<table>
<thead><tr><th>code</th><th>slug</th><th>name</th><th>description</th><th>caching</th><th>communicationPattern</th><th>dataFormat</th><th>fullName</th><th>protocol</th><th>state</th><th>useCases</th></tr></thead>
<tbody><tr><td>01</td><td>rest</td><td>REST</td><td>HTTPプロトコルを使用したリソース指向のアーキテクチャスタイルです。</td><td>Excellent (HTTP-level)</td><td>Request-Response</td><td>[&quot;JSON&quot;,&quot;XML&quot;,&quot;YAML&quot;,&quot;Plain Text&quot;]</td><td>Representational State Transfer</td><td>HTTP/1.1, HTTP/2</td><td>Stateless</td><td>[&quot;Webアプリケーション&quot;,&quot;モバイルアプリ&quot;,&quot;マイクロサービス&quot;,&quot;パブリックAPI&quot;]</td></tr>
<tr><td>02</td><td>graphql</td><td>GraphQL</td><td>クライアント主導のクエリ言語による柔軟なデータ取得を実現するAPIです。</td><td>Complex (requires custom implementation)</td><td>Query-Response</td><td>[&quot;JSON&quot;]</td><td>Graph Query Language</td><td>HTTP/1.1, HTTP/2</td><td>Stateless</td><td>[&quot;モバイルアプリ&quot;,&quot;SPA&quot;,&quot;複雑なデータ関係&quot;,&quot;APIアグリゲーション&quot;]</td></tr>
<tr><td>03</td><td>soap</td><td>SOAP</td><td>XMLベースのメッセージングプロトコルで、厳格な標準化を特徴とするAPIです。</td><td>No built-in caching</td><td>Request-Response, One-way</td><td>[&quot;XML&quot;]</td><td>Simple Object Access Protocol</td><td>HTTP, HTTPS, SMTP, TCP</td><td>Stateful or Stateless</td><td>[&quot;金融サービス&quot;,&quot;医療システム&quot;,&quot;エンタープライズ統合&quot;,&quot;レガシーシステム&quot;]</td></tr>
<tr><td>04</td><td>grpc</td><td>gRPC</td><td>Googleが開発した高性能なRPCフレームワークで、Protocol Buffersを使用します。</td><td>No built-in HTTP caching</td><td>Unary, Server Streaming, Client Streaming, Bidirectional Streaming</td><td>[&quot;Protocol Buffers (binary)&quot;]</td><td>Google Remote Procedure Call</td><td>HTTP/2</td><td>Connection-based</td><td>[&quot;マイクロサービス&quot;,&quot;内部サービス間通信&quot;,&quot;リアルタイムシステム&quot;,&quot;IoT&quot;]</td></tr>
<tr><td>05</td><td>websocket</td><td>WebSocket</td><td>全二重通信を実現するプロトコルで、リアルタイムデータ交換に適しています。</td><td>Requires custom logic</td><td>Full-duplex, Event-driven</td><td>[&quot;JSON&quot;,&quot;Binary&quot;,&quot;Text&quot;]</td><td>WebSocket Protocol</td><td>WS, WSS (WebSocket over TLS)</td><td>Stateful (persistent connection)</td><td>[&quot;チャットアプリ&quot;,&quot;ライブダッシュボード&quot;,&quot;オンラインゲーム&quot;,&quot;協調編集ツール&quot;]</td></tr>
<tr><td>06</td><td>webhook</td><td>Webhook</td><td>イベント駆動型のHTTPコールバック機構で、サーバーからクライアントへのプッシュ通知を実現します。</td><td>Not applicable</td><td>Event-driven, Push</td><td>[&quot;JSON&quot;,&quot;XML&quot;,&quot;Form Data&quot;]</td><td>Web Callback</td><td>HTTP, HTTPS</td><td>Stateless</td><td>[&quot;決済通知&quot;,&quot;CI/CD連携&quot;,&quot;通知システム&quot;,&quot;システム間連携&quot;]</td></tr></tbody>
</table>