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