##WebAPIとは
・HTTPプロトコルを利用してネットワーク越しに呼び出すAPI
・URIによって指定
・サーバ側の情報を書き換えたり、サーバ側に置かれた情報を取得できたりする
・ブラウザを使って人間が直接アクセスすることを目的としていない
##WebAPIの例
ProgrammableWebを参照
(http://www.programmableweb.com/category)
##WebAPIの利点
1.これまでは、サービスに組み込むために独自に用意する必要があったものが、Web APIを通じて利用可能な単体のサービスとして提供できる。
(IaaS、BaaS(Backend as a Service)、DaaS(Data Storage as a Service))
自前で運用するよりもコストが割安。
2.全く思いつきもしなかった発想の機能を、他の誰かがAPIを利用して作ることがある。
「APIの公開は様々なサービスが相互に連携しつつ形成するサービスのエコシステムのなかで、"接着剤"の働きをする」
3.「直接販売」から「間接販売」へ
個々のサービスが自らのウェブサイトで直接サービスを行うモデル
↓
APIを提供し、それを複数組み合わせたアプリがユーザーにサービスを行うモデル
(直営店だけでなく、小売でサービスを提供する)
##WebAPIの弱み(?)
サードパーティJavaScript
ー他のページに貼り付ける目的で提供されるJavaScriptファイル
JavaScriptを使ってブラウザからアクセスされるAPIなので、クライアント側のコードは簡単に読める。→不正アクセス、なりすましが容易
(例えば、ソーシャルゲームでアイテムを不正に大量入手する等)
そもそも、データを盗もうとしている人は、APIを公開していようがいまいが盗もうとする。
自分たちでAPIを公開しないと逆に情報の取得をコントロールできなくなる。
##API経由ですべきこと(しなければならないこと)
1.ECサイト
商品の検索や購入、オススメ情報の取得
2.写真共有サイト
写真の投稿やタグ付け
3.SNSサイト
他のページに自分のサービスの情報や機能を貼り付ける仕組みを提供する場合
バックエンドとなるAPIを設計する必要がある
##RESTとWeb API
「REST API」という言葉の使われ方について
###RESTとは、Webのアーキテクチャスタイル
アーキテクチャスタイルの例
・MVC(Model-View-Controller)
・パイプ&フィルタ(Pipe and Filter)
・イベントシステム(Event System)
など
|設計粒度|設計|設計の抽象化|
|:----------|:-----------|:------------|:------------|
|小|デザイン|デザインパターン||
|大|アーキテクチャ |アーキテクチャスタイル(アーキテクチャ設計の指針、作法、流儀)|
抽象化レベル | Webでの例 |
---|---|
アーキテクチャスタイル | REST |
アーキテクチャ | ブラウザ、サーバ、プロキシ、HTTP、URI、HTML |
実装 | Apache、Firefox、Internet Explorer |
###RESTの異なる定義
・Fielding※1のRESTアーキテクチャスタイルの原則に合わせたWebサービスシステム。
・RPCスタイルに合わせた簡易な XML(またはJSONなど)+HTTP インターフェイスを採用したシステム(SOAP※2は使わない) 。
( https://ja.wikipedia.org/wiki/REST より引用)
※1 HTTPプロトコル規格の主要著者の一人
※2 XML Webサービスのための、XMLベースのRPCプロトコル
「REST API」という言葉の使われ方は、2番目の意味で用いられる。
##最後に
Webサービス(人間用のインタフェース)もWebAPI(プログラム用のインタフェース)も同じWeb技術を使ったインタフェースであり、Web上にあるリソースである。
サービスを公開したら、APIも当然公開するよねー