はじめに
APIについて勉強をし始めました。
APIって何?という基礎的な部分から自身の理解のために言語化を行います。
APIってなに?
Aplication Programming Interfaceの略
他社が提供するサービス内の情報や機能を扱えるようにする仕組み。
あるアプリからほかのサービスだったりアプリの機能を使いたいときに使うもの。
サービス側が提供しているもの。
という説明をよく見かけるが、もっと広く言うと仕組みと仕組みをつなぐもの。
必ずしも外部からの連携をAPIと呼ぶとは限らない。
APIには2種類ある
- 外部に公開しているAPI
サードパーティ製のアプリとの連携に使ったりするもの。 - 外部に公開されていないAPI
サービスそのものを構築するために存在しているもの。
そしてそれらのほうが圧倒的に数があるので開発数は一般公開されていないもののほうが多い。
身近なAPIって?
例えば、twitterのツイート取得がおこなえる、他社製のアプリなどが挙げられる。
twitter純正のアプリケーションではないが、
twitterのAPIを利用することでtwitterのサービスを利用することができている。
本例はtwitterのサービスとサードパーティ製アプリとの連携例
APIは「たたく」という言い方がされることが多い。
「フォロワー取得のAPIをたたくよ」というのは、「フォロワー取得のAPIを使うよ」という意味。
REST APIとは
RESTful APIとも呼ぶ。
RESTは REpresentatinal State Transfer の略
直訳すると、代表的な状態転送。
Webサービス設計思想の1つ
REST APIはRESTの原則に従って実装されているAPIのことをいう。
サービス利用者が便利に使える仕組みというところではなく、開発サイドの話というところがポイント。REST APIの4大設計ルール
アドレス可能性
URLを使うことで一意に結果表示ができる。
取得や削除などの処理内容でURLが変わらないということ。
同じURLでGETもPOSTもできるよ!っていうこと。
統一インターフェイス
HTTPメソッドを使ってリクエストをする。Json形式で返答をする。など
情報の送受信を決まったやり方を行いましょうということ。
ステートレス性
直訳は状態を持たない。
サーバーがクライアントの状態を持たないように設計する。
昔の情報を保持してしまうと、煩雑になってしまうため、
ステートレスにし、シンプルなシステム構築を行いましょうということ。
つまり、クライアント情報によって処理が変わるということはなく
どのクライアントもあらかじめ準備した処理しか行えない。行わなない。
クライアント情報がないため、処理の選択肢を増やしたり、情報更新をする際には
シンプルにすることで拡張性が高いというメリットもある。
病院の個人カルテのようなものがある状態がステートフルな状態。
プランA、プランB・・・などの選択肢のみで、クライアント情報に依存しない仕組みがステートレスな状態。
接続性
1つの地点から様々なページへのアクセスが可能になるということ。
例えば、マイページから設定に遷移出来たり、投稿取得に遷移出来たりするということ。