APIとはなんであろうか
Cloud9は週末に
面談は来週になったのと、実際にコードを書くのは腰をすえてやったほうが良さそうという理由で、今日予定していた「Cloud9でJavaを動かしてみる」は延期。
今日は「サーバ側の機能をAPI化する」という別の案件について予備知識をつけるために、APIについて調べておく。
APIとは
Application Programming Interfaceの略。
ソフトウェアやアプリケーションなどの一部を外部に向けて公開することにより、第三者が開発したソフトウェアと機能を共有できるようにしてくれるもの。
WebAPIとAPIは違うもの?
WebAPIとは、HTTP/HTTPSベースで実現するAPI。プログラムから使用することを前提としたWebサービスとの窓口。
WebAPIはAPIの一部だが、単にAPIというと「アプリケーションとプラットフォーム(OSやミドルウェア)を繋ぐインタフェース」という意味合いになる(こともある)。
Web APIの代表的な実装方式として「REST」と「SOAP」がある。
REST
GETまたはPOSTでリクエストを送信し、レスポンスをXMLデータで受け取る形式。
以下の設計原則がある。
- ステートレスである
- セッションなどの状態管理を行わない
- インターフェースが統一されている
- HTTPメソッド(GET,POST,PUT,DELETE)はCRUD操作と対応付けられる
- 処理結果をHTTPステータスコードで返す
- アドレス指定可能なURIで公開する
- URIはリソースを示すため、名詞のみで構成する
SOAP
XMLで記述された「SOAPメッセージ」でデータをやりとりする。 (リクエスト、レスポンス共にXML)
WSDLというWebサービスインタフェース記述言語でSOAPメッセージの構造を定義する。
認可と認証
認可とは、権限をあたえること。
認証とは、認証は誰であるかを確認すること。
認可を実現するプロトコルにOAuth、認証を実現するプロトコルにOpenID Connectがある。
OAuth
Webサービス間で「アクセス権限の認可」を行うためのプロトコル。
WebAPIの使用可否はアクセストークンによって制御され、このアクセストークンの要求と応答の部分を標準化するもの。
OpenID Connect
OAuth 2.0の拡張仕様。
アクセストークンに加えIDトークンも発行する。
最近の棚
特に書くような出来事もなく、「さらばFFⅦ④」を書くのも面倒なので、現在の棚を写しておく。