みなさんこんにちは。teratail開発チームの出川です。
APIとはApplication Programming Interfaceの略で,
Web APIを公開しているサービスは次々と増えています。teratailもユーザが自由に使えるWeb APIを公開していて,
- teratail API |teratail
(テラテイル) - https://
teratail. com/ api - 参考:teratail-archive
- http://
argius. net/ teratail-archive/
MicrosoftやDocomoなど,
Web APIは他のサービスで使われているものを二次利用する性質上,
HTTPの仕組み
Web APIのほとんどはHTTPによって通信を行います。そのため,
HTTPはWebサーバとWebブラウザがデータをやりとりするのに使われるプロトコルです。Webサイトの場合のレスポンスは主にHTMLであり,
Web APIへのリクエストにはURIとメソッドの2つを指定する必要があります。Web APIではURIのことをエンドポイントとも呼びます。
メソッドにはGET, POST, PUT, DELETE, HEAD, OPTIONSなどがあります。GETはリソースを取得する時に用い,
各種Web APIのドキュメントはこれらHTTPの仕様を大前提としているので,
より詳しい知識はRFCにまとまっていますので,
- 参考:HTTP/
1. 1 — RFC 7230~7235 — 日本語訳 - http://
www. hcn. zaq. ne. jp/ ___/ WEB/ RFC723X-ja. html
Web APIの試し方
Web APIを発見したら,
まずそもそもWeb APIを利用する際には,
Web APIの動作を試すのにもっとも汎用的に利用できるのがcurlコマンドです。curlはUNIX系のOSであればほとんどの場合デフォルトでインストールされていますし,
$ curl -X GET https://teratail.com/api/v1/questions?limit=3 | jq .
{
"meta": {
"message": "success",
"total_page": 15542,
"page": 1,
"limit": 2,
"hit_num": 31083
},
"questions": [
{
"id": 31445,
"title": "インスタンスの生成について",
"created": "2016-04-04 17:16:04",
"modified": "2016-04-04 17:16:04",
"count_reply": 0,
"count_clip": 0,
"count_pv": 2,
"is_beginner": false,
"is_accepted": false,
"is_presentation": false,
"tags": [
"Swift",
"Swift 2"
],
"user": {
"display_name": "14ic158p",
"photo": "https://cdn.teratail.com/uploads/avatars/34165/NBBp0Sd9_thumbnail.jpg",
"score": 17
}
},
... (略)
]
}MacではCocoaRestClientというツールがあり,
また単純にレスポンスとして返ってきたJSONの整形や抽出を行う場合は,
もちろんこれらのツールを使わなくても,
- 参考:オススメのモックWEBサーバー構築方法を教えてください。
- https://
teratail. com/ questions/ 27066
レートリミットを意識する
多くの公開Web APIには,
まず利用する際には,
レートリミットを超えるアクセスは正しいレスポンスを返さないので,
アプリケーションから不用意にWeb APIにリクエストさせず,
処理の書き方
アプリケーションでWeb APIを利用したコードを書くときは,
Webアプリケーションでは,
サーバサイドからリクエストをする場合は非同期通信にするか,XMLHttpRequrest,net/パッケージを利用するなど,
- 参考:swift2でHTTP通信を行う方法|teratail
- https://
teratail. com/ questions/ 30313
WebアプリケーションのフロントエンドからJavaScriptで非同期通信を行うことはよく行われます。認証に必要な情報をユーザに送るのは,
SSL
Web APIを多用するスマートフォンアプリでは無線の通信状態によってアプリケーションそのものの処理時間が大きく変わります。Web APIのレスポンスを待ってユーザに情報を表示させるときはプログレスバーを表示したり,
先に挙げたレートリミットでWeb APIが利用できない場合や,
おわりに
ここまで,
利用に関しては,
Web APIで他のWebサービスのデータや機能を二次利用することで,
- teratail
【テラテイル】 |思考するエンジニアのためのQAプラットフォーム - https://
teratail. com/