WebAPIって何?
「webAPI」という名前に聞き覚えがある人もいるかもしれません。WebAPIというのは、一言で言うと機能の窓口的な役割を果たすものです。例えば、ウェブやスマートフォンアプリを作ったとして、ただ作っただけではそれは閉じたプログラムの中で完結するものでしかありません。が、WebAPIを使うことで、最新のニュースや天気を取得したり、データベースからデータを参照したりすることが可能となります。閉じたプログラムから、外界に開けたプログラミングが可能になるのです。
リクエストとレスポンス
先ほど述べたように、WebAPIは主に何か外のデータを取得するときに使います。同様に外のデータベースに情報を登録することもできます。
この時、一連の流れを示すと、
ブラウザからHTTPリクエストを出す→WebAPIを経由→サーバーorDBで何らかの処理(データの検索など)を行う→WebAPIを経由→HTTPレスポンスが返ってくる
というふうになります。見てわかるように、WebAPIは端末とサーバーorDBをつなぐ窓口的な役割をしています。この時のリクエストとレスポンスの型には一定のルールがあり、それを少し見ていきましょう。
HTTPリクエスト
リクエストパス:例:/user/name
HTTPメソッド:データの取得→GET,データの追加→POST
リクエストヘッダ:Content-Type:application/json
クエリストリング:例:sex=man&height=170
リクエストボディ:(なし)
上に示したのがHTTPリクエストに含まれる情報です。リクエストにはこの情報を付加する必要があり、リクエストパスやクエリストリングは適宜取得したいデータなどによって変更します。
HTTPレスポンス
ステータスコード:成功→200,失敗→400など
レスポンスヘッダ:Content-Type:application/json
レスポンスボディ:{“names”:[{“name”: “yamada”},{“name”: “honda”},…..]}
上に示したのがHTTPレスポンスに含まれる情報です。リクエストを出して帰ってきた情報には、正しく処理が完了したかどうかのおステータスコードがあり、うまくいっていれば一般的に200が返ってきます。逆にサーバーでエラーが生じたりした時は500が返ってきたりします。ボディには取得した情報などが格納される場合が多いです。
リクエストパスとクエリストリング
はてなブックマークを取得するAPI
http://api.b.st-hatena.com/entry.count?url={目的のURL}
上記にはてなブックマーク数を取得できるAPIを例に示します。公開されているAPIなので誰でも簡単に利用可能ですが、中には登録などが必要なものもあるので注意しましょう。
さて、この中でリクエストパスとクエリストリングがどこかわかるでしょうか。
リクエストパスは/entry.count
クエリストリングはurl={目的のURL}の部分です。パスとクエリストリングは半角の?で繋がれます。試しにyahooのホームページを目的のURLに入れてブラウザで表示してみてください。
http://api.b.st-hatena.com/entry.count?url=https://www.yahoo.co.jp
するとブラウザに数字が表示されると思います。これが今回のレスポンスということになります。レスポンスのボディはjson形式のものが多いですが、今回は1つだけしか値が返ってこないので数字だけが表示されるはずです。なんとなくAPIの使い方がつかめたのではないでしょうか。
この場合はデータを取得しているのでメソッドはGETです。しかし、POSTメソッドと使いたい時はURLに情報が表示されてはまずいですよね。なのでPOSTの場合はクエリストリングは表示されないように設計されています。
まとめ
なんとなくAPIについてわかったのではないでしょうか?APIを使って返ってきたHTTPレスポンスのボディをうまくアプリに組み込むことで、外界に開けたアプリケーションを誰でもつくることが可能というわけです。プログラムの組み方はいくつか方法がありますので、別の記事で紹介したいと思います。
〔おすすめサイト〕
充実の機能は「excel database」