APIと一言で言っても、よく使うWeb API以外にも様々な場面で使われていて、場面場面で微妙に意味が違うからずっと腑に落ちない部分があったので、今一度きちんと整理しました。
APIとは:
ソフトウェア同士がやりとりをするための決まり事
APIを提供する側と使う側の2者が必ず存在し、双方がやり取りするための決まり事
WebAPIを例にとると、アプリケーションの機能を外部から利用できるように、提供側(バックエンド)が呼び出し可能な関数を用意して公開する。
使う側(フロント)は提供された関数を呼び出し、データの取得、書き換えなどを行い連携する。
Webアプリの開発現場ではフロントエンドとバックエンドが開発前にAPIのインターフェース、つまりはリクエスト、レスポンスの決まりごとを話し合って合意形成
し、その決まりごとに準じて開発を進めていくのが一般的。
APIの種類:
Web APIだけではなく色々な種類があります。
・OSが提供するシステムコールAPI
印刷機能など
・プログラミング言語が提供するAPI
-JavaScriptであればfetchなど、
・アプリケーション、ライブラリが提供するAPI
・Webサービスが提供するAPI
HTTPプロトコルでネットワーク経由でやり取りするAPI
API仕様書
APIは使い方の仕様やルール
と機能
の2つで1セットとも言われてます。
仕様や使い方を文書化するのにOPEN APIなどが使われている。
よくフロントエンドの開発で複数のコンポーネントで使われる同じ様な関数は、どこからでも呼べる様にUtilsファイル等にまとめる共通化をしますが、API化は関数をインターネット経由で別のプログラムから呼べる様にする事かなと思いました。
だから、Web APIは「ネットワーク越しに利用できる関数」とも言われています。
まとめ
・サーバーアプリケーションの機能をネットワーク経由で外部から利用できる様にする事をAPI化。
・HTTPやHTTPSなどを使ってデータを送受信するため、同じ言語で開発されたアプリケーションでなくても連携できる。
・REST APIの場合、URLそのものが関数名で引数を渡す事で結果が変化する。
・レスポンスデータの形式は最近はJSON。一昔前はXMLが主流だった。
・非同期処理なんで、AJAX形式で利用される事が多い(AXIOSも)
・データを常に同じ様に返す、データベース管理上の理由でAPIを2つ叩いてフロント側で結合して使う様なことは多々ある。REST APIだとエンドポイントを増殖させすぎない為。
・PC、アプリなどで様々なデバイスで同じ機能を共通して使うことができるので、開発しやすいという利点がある。
・企業が公開してるWeAPI(有名なのはGoogleMapAPI、ぐるなびAPIなど)を使ってサービス開発を行うことも多い。しかしGoogleMapAPIは無料だったのが従量課金制になったり、食べログAPIがサービス終了したりと企業のWebAPIに依存するのは少し問題もある。