お疲れ様です。Chamujiです。
今回はRESTAPIについて学習したことを備忘録として残そうかと思います。
WebAPIについて
HTTP・HTTPS通信によってやり取りするAPIのこと
プログラミング言語が異なるアプリケーション同士であっても連携できる他、Webブラウザでも利用可能
思想設計
今回RESTAPIについて話をするが、私は最初RESTAPIという種類のAPIが存在するのだと思っていた。
実際はそうではなく、RESTはAPIの設計の思想であることが分かった。マジで赤面。
REST API (RESTFul API)
-
REpresentational State Transferの略称
- REpresental: 具象化された
- State:状態
- Transfer:転送
翻訳すると、具象化された状態を転送するAPIとなる。。。。
余計わからなくなったのでもう少し深掘りする。
RESTの4原則
- HTTPを設計した中心人物であるRoy Fielding氏が2000年に提唱したもので下記の4つがあげられる。
アドレス可能性 (Addressablity) |
全てのリソースが一意なURLを持っている (提供するリソースは全てURIで表現できる) |
ステートレス性 (Stateless) |
セッション管理や状態管理などはしない (情報を保持せずやり取りは1回ごとに完結する) |
接続性 (Connectable) |
やり取りされる情報に別のリンク(ハイパーリンク)を含めることができる 1つのリンクから別の情報にリンク(接続)することができて、RESTfulなシステム同士なら円滑に情報連携を行うことができる |
統一インターフェース (Uniform Interface) |
リソースの操作(取得、作成、更新、削除)はHTTPメソッド(GET、POST、PUT、DELETE)を利用し、結果はXMLやHTML、JSONなどで返されるといったルールで値を返す |
上記4点を満たすものをRESTAPIやRESTFULAPIと呼んだりする。
引用:https://tech.012grp.co.jp/entry/rest_api_basics
RESTのメリット
■ モバイルアプリなどの他システムとの連携が容易になる
HTTPリクエストに対し、JSON形式やXML形式といった、軽量のデータのみを返すため、加工が容易で、通信環境が悪い場所であっても「待機時間が長くなる」や「操作性が低くなる」といった不具合が起こりづらくなります。
■ アプリケーションの中のリソースが容易にわかる
アドレス欄に入力すれば、そのリソースを参照できるため、どのリソースを操作しようとしているかがひと目でわかる。
■ 標準的なAPIの提供
RESTの思想に基づいたAPIを公開することで、標準的なデータフォーマットを使い、多様なアプリケーションを提供することができる。
RESTのデメリット
■ 実装ルールの統一性がない
実装ルールに統一性がないため、「十分に理解しないまま作られた、あやふやなRESTful APIが増えている」という弊害も生じる。
■ 仕様や定義に関する要素がない
ドキュメントと実装したときの乖離が発生しやすくなり、外部プログラムが動作を読み取ったり、想定したりすることができないというデメリットが生じる場合がある。
まとめ
次回はもう少しRESTについて説明を記載する。
参考文献
REST APIとは?ざっくりと理解してみる【初心者向け】
https://tech.012grp.co.jp/entry/rest_api_basics
API・Web API・REST APIの概要や違いについて整理する
https://mintaku-blog.net/api-difference/