みなさんこんにちは。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/