REST APIとは?SOAP APIとの違い・設計のポイントも
REST APIは、外部サービスの機能・情報を活用する際に利用する仕組みです。HTTPといった標準技術を使って開発でき、互換性に優れていることから、最も主流なAPIとしても知られています。
シンプルさに定評のあるREST AIですが、設計する際は少なからずスキルが必要となるだけでなく、規則やポイントもしっかりとおさえておかなければなりません。
そこで今回は、REST APIの概要や、REST API設計の規則とポイントについて詳しく解説します。REST APIとは何か知りたい方や、REST APIの設計をしたい情報システム部門の担当者の方やWeb開発・アプリケーション開発業務に携わるWebエンジニアの方はぜひ参考にしてください。
目次
1. REST APIとは?
REST APIとは、Webアプリケーションやソフトウェア同士の通信を支援するAPIのことです。システムの外部利用を目的としたプログラムの一種であり、シンプルで実装しやすい・汎用性に優れているといった特徴をもちます。
REST APIへの理解度をより深めるためには、「REST」と「API」それぞれの把握も欠かせません。
また、REST設計においては「アドレス可能性(Addressability)」「統一インターフェース(Uniform Interface)」「ステートレス性(Stateless)」「接続性(Connectability)」の4つが原則となっています。そして、RESTの設計規則や設計思想にもとづいてAPIに適用させたものが、REST APIです。なお、REST APIは「RESTful API」とも呼ばれています。
1-1. SOAP APIとの違い
REST APIと似たものとして「SOAP API(SimpleObject Access Protocol API)」が挙げられます。REST APIとSOAP APIはいずれもHTTPプロトコルを活用するものの、SOAP APIはWebアプリケーション同士がそれぞれ異なるプログラミング言語で構成されていても通信を行える点が特徴です。
しかし、SOAP APIはREST APIに比べて負荷が大きく、スピードも遅くなる傾向にあります。とは言えデータ通信面やセキュリティ面の安全性にも優れているため、REST APIと同様に企業からのニーズが高いと言えるでしょう。
2. REST API設計の6つの規則
REST APIはHTTPメソッドやJSON形式といった主流なWeb技術を採用するため、シンプルかつ効率的に開発できるといったメリットがあります。URIの構造も確立されており、多くの開発者が理解しやすかったり、高いステートレス性によって拡張可能性が向上したりするという点も魅力と言えるでしょう。
多くのメリットがある一方で、REST API設計の際はいくつかの制約に従う必要があることに注意が必要です。ここでは、REST API設計における6つの規則について、それぞれ詳しく説明します。
2-1. 統一インターフェース
REST API設計において、まず重要となるのが「統一されたインターフェース」です。モバイルアプリケーション・ブラウザ・JavaScriptコードなど、どのようなRESTクライアントであっても同様の方法でサーバーを呼び出し、リソースにアクセスできる状態にする必要があります。
また、WebサービスにおいてHTTPリクエストとHTTPレスポンス・APIレスポンスはサーバー内で完結することが重要です。したがって、クライアントはサーバーのリクエスト処理に必要な情報をすべて送信し、サーバーは要求されたリソースを変更・削除する、または適切なレスポンスを返す必要があります。なお、APIにおけるレスポンスはJSON形式が用いられたレスポンスと、HTTPステータスコードなどで構成されます。
2-2. ステートレス
REST API設計においては、クライアントとサーバー間のやり取りはステートレスであることが基本です。ステートレスとは、サーバーにクライアントの関連データが含まれていないということで、サーバーはクライアントの状態を覚えておく必要がありません。
しかし、クライアントの状態は、メモリやデータベースに保存する必要があります。また、サーバーがデータを返す際に必要となるすべての情報がリクエストに含まれていなければならない点にもに注意しましょう。
2-3. キャッシュ可能
RESTは、既存のHTTPメソッドとインフラをそのまま活用できるため、HTTPが有するキャッシュも利用可能です。キャッシュ機能を活用することによって、クライアントはサーバーへの問い合わせ回数が減少し、無駄のない通信も可能となります。
2-4. コードオンデマンド
コードオンデマンドとは、サーバーからプログラムコードのスニペットを送信・ダウンロードをし、それをクライアント側で実行できる機能(アーキテクチャスタイル)のことです。
後からクライアント側で拡張できるといったメリットがある一方、ネットワーク通信におけるプロトコルの可視性が低下するおそれがあるというデメリットもあります。
2-5. クライアント・サーバー構造
RESTの構成要素は、クライアント・サーバーおよびリソースであり、クライアントとサーバーのコンポーネントはそれぞれ完全に分離している必要があります。
とは言え、多くのWebアプリケーションやソフトウェアでは、クライアントとサーバーを明確に定義していることがほとんどです。したがって、「REST API設計においては、単純に基本のクライアント・サーバー構造が規則として示されている」と考えておきましょう。
2-6. 階層型システム
階層型システムとは、クライアントとサーバーを完全に切り離して、各アプリケーションにおけるアクセス可能な情報を制限するシステムを指します。
階層型システムによって、アーキテクチャ全体の露出がなくなりREST APIのセキュリティが強化されるだけでなく、他の開発者がリソースの構造を把握しやすくなります。
3. REST API設計の3つのポイント
REST APIの設計の際には、リソースを洗い出し、URLを設計した上でHTTPメソッドを決める必要があります。加えて、REST API設計にはチーム内での役割分担が重要となり、各メンバーがプログラミング言語やバージョン管理ツールの知識・スキルを習得しておくことも欠かせません。
最後に、REST API設計時におけるポイントを3つ紹介します。
3-1. リソース
REST APIを設計する際は、まず初めにリソースを明確にし、必要となるAPIを洗い出しましょう。リソースの明確化・決定時は、下記の点をおさえておくことが大切です。
また、リソースをデータベーステーブルと考える方も多くいます。実際にリソースの明確化・洗い出しはデータベース設計(DB設計)と共通する部分もあるものの、あくまでAPIはインターフェースとなるため、1つのリソースにメタデータとして関連情報をもっていれば問題ありません。
3-2. URL
リソースを明確にしたあとは、URLの設計をします。URL設計においておさえておくべき点は、下記の通りです。
また、上記のポイントを意識するあまり、長いURLを設計してしまうケースも見られます。しかし、URLが長すぎると実装に手間がかかるだけでなく、一貫性や拡張性も大きく低下する可能性があるため、なるべくシンプルで短いURLを設計することがおすすめです。
3-3. HTTPメソッド
RESTアーキテクチャのクライアントからサーバーにリクエストが送信された際は、要求内容や種類に応じてHTTPメソッドの種類を切り替えます。HTTPメソッドの種類はいくつかありますが、中でもREST API設計において特によく利用されるHTTPメソッドは下記の4つです。
REST API設計をする際は、これらのHTTPメソッドを理解した上で、適切に使い分けを行いましょう。
まとめ
REST APIとは、Webアプリケーションやソフトウェア同士の通信を支援するAPIのことです。HTTPメソッドをはじめとした主流なWeb技術を採用するため、シンプルかつ効率的に開発できる点や、拡張性・汎用性に優れている点が魅力と言えるでしょう。
「CTC」が提供するC-FAPIは、金融機関でも問題なく利用できる高いセキュリティレベルの[FAPI - Financial-grade API]を用いたAPI連携ソリューションです。C-FAPIを導入すれば、独自のREST API設計を行う必要なく、高セキュリティなAPI開発が可能となります。APIセキュリティを大幅に強化するソリューションをお探しなら、ぜひ一度お問い合わせください。
API連携ソリューション「C-FAPI」についてはこちら