この記事にはこんなことが書かれています。
- web APIとは
- REST APIとは
- REST APIとWeb APIの関係
■モチベーション
前回記事でWebhookを使った情報伝達方法について実装してみたりしました。
【情報処理】AWSでwebhookの受信&メール通知を実装する(API Gateway+Lambda)
Webhookは、イベント駆動で相手や自分から何かを発信して終わりですが
もっと色々なことをやろうとすると、情報のやり取りが必要になってきます
(相手から情報をもらってそれを処理するとか)
なので、もう少しWebAPIなるものを深堀してみようと思いました。
■WebAPIとは
以下資料がわかりやすかったです↓
WebAPIについての説明
【初心者向け】APIとは?概要や活用メリット・使い方を解説
まとめると、
WebAPIは“Webサービス機能の一部として提供されているAPI”。
例えば、レストランでスタッフに料理を注文し(=要求を渡し)たらコックが料理を作りスタッフに返す(=加工した情報を返信する)流れにおいて、正しくやり取りが行われるように事前に取り決められた仕組み。
■WebAPIの種類
情報の公開範囲にしたがって、以下のように分類されるようです。
- オープンAPI
- パートナーAPI
- プライベートAPI
- 複合API
上記、オープンAPI(外部利用が可能なAPI)というのがイメージしやすかったので、それをベースに考えてみましょう。
ネットサーフィンをしていて以下の記事を見つけました。
こんなにも沢山オープンAPIが世の中にあふれているんですね…
APIを探そう。国内外のインデックスサービスまとめ
天気情報などを活用して〇〇するとか、いろんなことに使えそうですね。
■REST API
ちまたでよく聞くREST APIとは何でしょうか。
以下サイトから要点を引用すると
RESTとは、広く普及したWebのインフラをそのまま利用して、
簡易な手順でアクセスを可能にした、Webサービス向けのソフトウェア設計アーキテクチャ。
Webの仕組み(HTTP手順)をそのまま利用することや、
テキストベースのデータをやりとりするなど通信手順が非常に簡易なため、
Webアプリケーションやスマートフォンアプリ、ソーシャルゲームなどで幅広く利用されている。
また、具体例としてWeb版Twitter(現x)の例が提示されています。
RESTはURLを指定するだけでAPIを呼び出せる。例えば、Web版のTwitterで、
ツイートの中から「Windows」を含むものを検索して表示するには以下のURLを呼び出す。
https://twitter.com/search?q=%22Windows%22
これと同じ検索をTwitter REST APIで実行するには、URLの一部を置き換えて以下のようにする。
https://api.twitter.com/1.1/search/tweets.json?q=%22Windows%22
このように、通常のWeb呼び出しと同様にして、APIを呼び出せる手軽さが大きな特徴だ。
引用元
REST
そして、RESTは以下原則に基づいて実装されます。
1:ステートレスであること
2:全てのリソース(情報)はURI(Uniform Resource Identifier)で表現する
3:HTTPメソッドで操作方法を表現した統一されたインターフェース
HTTPで定義されている "GET"、"POST"、"PUT"、"DELETE" などを使用
4:アプリケーション情報と状態遷移の両方を扱えるデータ形式の使用
HTML、XML、JSON、バイナリで表現
ステートレス(お互いの状態を気にしない)で、1方向のやり取りをする上、HTTPという一般的な通信方式を使うのでお手軽というところがポイントです。
つまり、REST APIは、Web APIを実現するために、いくつかの原則を体系立てたものという認識でよいでしょうか。
■REST APIとWeb APIの関係
私だけでしょうか。REST APIとWeb APIの関係がわからなくなってきました。
ので、もう一度整理してみましょう。
Web APIは、ブラウザなどの一般に利用されている基盤を経由して
別のサーバー上にあるプログラムを呼び出したり、情報を受け取ったりする
仲介者の役割をする“概念”。
で、その実装方式について定義したものがRESTという理解でよいかと思います。
RESTの原則は上記で記載した1~4の内容です。
とわかったところで、また細かい疑問が・・・RESTとRESTfullって何…?
REST APIを調べていると結構見かけるんですよね、RESTfullっていう単語を…
ですが、それは以下の方が解説下さっています。結論、名詞と形容詞の関係で同じ意味と捉えて概ね問題なさそうです。
RESTful APIとは何なのかとは何なのか - RESTfulのfulとは何なのか
■実装してみるか
上記で紹介したURLで無料枠で使えるオープンAPIを探して、何かしら作ってみたくなった。
以下サイトあたりを参考に作ってみたいと思う。それはまた次回に。