こんにちは、パブリテック事業部のプロダクト担当、大場です。
今回は最近よく聞くREST APIについて、そもそもAPIとは?RESTって何?ということについて、簡単にまとめてみましたのでお付き合いください。
APIとは
アプリケーション・プログラミング・インターフェイスの略で、アプリケーションやソフトウェアをつなぎ合わせるためのものです。Webシステムでは、Web・AP・DBのようにサーバの役割を分けることが多いですが、Web-AP間のように、サーバ間でデータのやり取りを行いたいときにAPIが使われます。
APサーバは特定の用途に特化したアプリケーション毎に分けたりしますが、例の図でいうとAP(ユーザ情報)は、DBにアクセスしてユーザ情報を更新したり、DBからユーザ情報を取得したりする用途のサーバになります。そのユーザ情報の操作を外から実施するために用意するものがAPIです。AP(ユーザ情報)活用のために用意したAPIをWebが呼び出すことで、Webがユーザ情報を扱うことが可能になります。
RESTとは
RESTという設計ルールに従って作成されたAPIをREST APIといいます。RESTとはAPIの設計ルールの1つですので、RESTに準じていないAPIもたくさんありますが、現在ではRESTのルールは非常によく使われています。
REST APIを作成するときに特に重要なことは以下の4点です。
- URIはリソースを表現する
- リソースの操作はHTTPメソッドで表現する
- HTTPの正しいステータスコードを返却する
- ステートレスであること
1. URIはリソースを表現する
URIには基本的に動詞を利用せず、名詞(リソース名)を利用します。先ほどのユーザ情報取得APIを作成する場合、URIを「/get/users/<ユーザID>」とするのは正しくありません。「/users/<ユーザID>」としましょう。
(必ずしも動詞を使ってはいけないということではありません)
2. リソースの操作はHTTPメソッドで表現する
URIにはリソースへの操作(取得、更新など)方法を含めず、HTTPのメソッドで操作内容を表現します。
- GET:リソースの取得
- POST:リソースの登録
- PUT:リソースの更新
- DELETE:リソースの削除
ユーザ情報取得APIであれば当然GETになりますね。
また、メソッドが異なれば同じURIでも問題ありませんので、以下のようにAPIを作成することもよくあります。
- GET:/users/<ユーザID> ⇒ <ユーザID>の情報を取得する
- POST:/users/<ユーザID> ⇒ <ユーザID>の情報を更新する
3. HTTPの正しいステータスコードを返却する
レスポンスには正しいHTTPのステータスコードを設定する必要があります。どんなコードがあるかはここでは説明しませんが、GETメソッドでデータが存在しない場合に404を返却するか、200で空のボディを返却するかなど、設計時にはよく検討する必要があります。
4. ステートレスであること
ステートレスとは状態を保持しないという意味になります。つまり、ステートレスなAPIとは実行される順番などを意識せず、それぞれのリクエストが独立しているAPIであることをいいます。
下記の例はどちらもAとBの情報を取得していますが、ステートフルの場合はAとBの情報受付APIが実行されたいう状態をサーバに保持し、情報取得APIの実行でAとBの情報を取得しています。ステートレスの場合は状態を保持しないため、AとBの情報が欲しいというデータを1つのリクエストに設定して取得していますね。つまり、リクエストが独立している、言い換えれば1つのリクエストで完結しているということを、ステートレスなAPIといいます。
WebAPIとは
最後に、WebAPIについても少し触れておきます。最近では単純にAPIというと、Web APIを指すことが多くなりました。WebAPIとはWeb上に公開しているAPIのことです。APIとはサーバ間でデータの操作をするために利用すると書きましたが、そのAPIをWeb上に公開し、他のサービスから利用できるようにしたものがWebAPIです。
最近、全然関係ないサービスでもログインにYahoo!のアカウントが使えることがありますよね? あれはYahoo!側で用意したWebAPIを利用して、Yahooが持している情報と連携しているのです。
このように WebAPIを利用すればサービスとサービスを連携することができるようになります。今後、LoGoチャットやLoGoフォームにもWebAPIを作成し、いろいろなサービスと連携する日が来るかもしれません!!