##APIとは
APIの正式名は「Application Programming Interface」。
API とはソフトウェアを一部公開して、他のソフトウェアと機能を共有できるようにしたもの。
ソフトウェアの一部をWEB上に公開し、誰でも利用することができる。
これを外部APIといい、特定のアプリだけに対応したものは内部APIという。
自分のソフトウェアに他のソフトウェアの機能を埋め込むことができるようになるので、
アプリケーション同士で連携することが可能になる。
API利用例:
・アプリ自身では地図情報を持たずGoogle mapマップを表示をしたい
⇒Google mapのAPI から情報を取得する。
・他のアプリからのログインを可能にしたい
⇒TwitterのAPI から情報を取得する。
##WebAPIとは
HTTP/HTTPSベースで送受信することで利用できるAPIをWebAPIという。
##ウェブとWebAPIの違い
両方ともhttpでリクエストを送受信するが、
通常のウェブはページごとレスポンスを行い、
WebAPIはデータだけをレスポンスする。
データはJSON やXML といった形式が一般的に使われる。
(XMLは最近見ない。JSONに比べ記述する項目が多く、推奨されない。)
##REST APIとは
Web APIの代表的な実装方式として、RESTとSOAPがある。
SOAP方式はXMLを使用したものでここでは割愛。
今ではWeb API=RESTと思ってもいい。
REST方式で実装したWeb APIをREST APIという。
RESTful APIも同じ意味で使われる。
###特徴4つ
1、HTTPのメソッド(命令)でデータ操作種別(CRUD)を表す
POSTメソッドであれば作成(Create)、
GETメソッドであれば参照(Reference)、
PUT/PATCHメソッドであれば更新(Update)、
DELETEメソッドであれば削除(Delete)を表す
何をしようとしているか一目瞭然!
2、URIで操作対象のリソースを判別可能にする
RESTでは、APIを介して操作する対象を「リソース」と呼ぶ。
例えば「ユーザー」というリソースを表すために「users」というリソース名を付与する。
ユーザーIDが「1000」のユーザー情報を取得したい場合、
下記のようなURIフォーマットでURIを生成し、操作可能とする
URIフォーマット:https://example.com/users/:user_id
生成されたURI:https//example.com/users/1000
どこのデータに対して処理を行おうとしているか一目瞭然!
3、セッションなどの状態管理を行わない。
(やり取りされる情報はそれ自体で完結している)
作業の状態情報を別途保存して管理することはしません。
APIサーバーは受信したリクエストだけを単純に処理すればいい。
これによってサービスの自由度が高くなり、実装も簡単になる。
ステートレスにすることで、スケーラビリティが向上!
つまり、言い換えると、
セッション情報やCookie情報を保存して管理していないため、
アクセスの集中に耐えやすい構造にできる!
4、情報の内部に、別の情報や(その情報の別の)状態へのリンクを含めることができる。
##omake:twitterのAPIを叩いて自身のユーザー情報をjsonで受け取ってみよう。
GET users/show - ユーザーを取得する:サイト
取得するユーザーID「realDonaldTrump」
目次からデモを選択。
デモでuser_idを省略し、screen_nameにIDを入力。
リクエストを実行。
jsonデータが取得出来ました!
##参考記事
API とは?
https://qiita.com/jonathanh/items/6394ffb5b5ad86ae914f
APIとは何か? Web APIとの違い、利用者のタスクを解説
https://techtarget.itmedia.co.jp/tt/news/1806/13/news01.html