配属されているプロジェクトでREST APIの実装を担当することになったので、REST APIを理解するうえで前提となる
- そもそもAPIとは何か
- Web APIとは何か
についてまとめました。
1. そもそもAPIとは?
APIとは「Application Programming Interface(アプリケーション・プログラミング・インターフェイス)」の略語で、ざっくり言うと、異なるアプリケーション同士で情報をやり取りする際の橋渡し役を行うものです。
インターフェイスは、「接点」「境界面」などの意味を持つ英単語です。
参考記事:
https://mintaku-blog.net/api-difference/
2. Web APIとは
REST APIとは、Web APIの一種なので、Web APIとは何かについてまとめます。
Web APIとは、Webブラウザで用いられているHTTP/HTTPSプロトコルを用いて、Webサーバー間で情報をやり取りするAPIです。
APIにはいろいろな種類があり、例えばWeb API以外には下記のようなものがありますが、情報が多すぎても読みづらくなってしまうので今回は割愛します。
- ネイティブAPI
- ライブラリAPI
- データベースAPI
参考記事:
https://mintaku-blog.net/api-difference/
https://vnext.co.jp/v-blog/what-is-API.html
3.Web APIの仕組み
URLとメソッドを指定してWebサーバーにリクエストを送ることで、必要なデータを取得・保存することができます。
具体的には、下記のような仕組みになっています。
3. リクエスト
WebAPIを利用するには、ブラウザを利用するときと同様にHTTP/HTTPSでリクエストを送る必要があります。
その時に必要なのは、下記の2つの情報です。
- HTTPメソッド
- URL
HTTPメソッドは、リクエストによってサーバーに期待するアクションを示したものです。
一般的によく用いられるのは、下記の4つです。
メソッド | 概要 |
---|---|
GET | データの取得 |
POST | データの送信(主に新規作成) |
PUT | データの送信(主に既存データの更新) |
DELETE | データの削除 |
参考記事:
https://developer.mozilla.org/ja/docs/Web/HTTP/Methods
https://tsuyopon.xyz/2019/01/31/understand-4-http-methods/
URLには、必要に応じてクエリパラメータで引数を渡します。
4. レスポンス
リクエストを送ると、Webサーバーがそれに応じて処理を行い、クライアントにレスポンスを返します。
レスポンスとして返ってくるデータは大きく3種類に分けられます。
- HTTPステータスライン
- HTTPレスポンスヘッダ
- HTTPレスポンスボディ
実際にWeb APIの取得時に確認するのはレスポンスボディですが、それぞれについて具体的に見ていきます。
4.1 HTTPステータスライン
HTTPリクエストが正常に完了したかどうかを示す、3桁の数字コードのことです。
ステータスコードごとに次のような意味があります。
ステータスコード | 意味 |
---|---|
100番台 | 処理中 |
200番台 | 処理成功 |
300番台 | リダイレクト |
400番台 | クライアントエラー |
500番台 | サーバーエラー |
参考記事:
https://developer.mozilla.org/ja/docs/Web/HTTP/Status
https://qiita.com/unsoluble_sugar/items/b080a16701946fcfce70
4.2 HTTPレスポンスヘッダ
フィールド名:内容で構成されています。
レスポンスボディには書ききれない詳細な情報が詰まっています。
レスポンスヘッダの例:
200 OK
Access-Control-Allow-Origin: *
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Mon, 18 Jul 2016 16:06:00 GMT
Etag: "c561c68d0ba92bbeb8b0f612a9199f722e3a621a"
Keep-Alive: timeout=5, max=997
Last-Modified: Mon, 18 Jul 2016 02:36:04 GMT
Server: Apache
Set-Cookie: mykey=myvalue; expires=Mon, 17-Jul-2017 16:06:00 GMT; Max-Age=31449600; Path=/; secure
Transfer-Encoding: chunked
Vary: Cookie, Accept-Encoding
X-Backend-Server: developer2.webapp.scl3.mozilla.com
X-Cache-Info: not cacheable; meta data too large
X-kuma-revision: 1085259
x-frame-options: DENY
4.3 HTTPレスポンスボディ
前述したとおり、Web APIの実行結果を確認するときは、主にこちらを参照します。
データ形式としては、たいていの場合JSONを使用します。
下記は、HTTPレスポンスボディの例です。
{
"searchInformation": {
"totalResults": "289,000,000",
"searchTime": "0.35",
"formattedSearchTime": "0.35 seconds"
},
"items": [
{
"link": "https://ja.wikipedia.org/wiki/東京",
"title": "東京 - Wikipedia",
"snippet": "東京(とうきょう)は、日本の首都。人口約1,397万人(2020年)。東京都の県庁所在地である。関東地方の、本州のほぼ中央に位置する。"
},
{
"link": "https://www.city.tokyo.lg.jp/",
"title": "東京都 | 東京都公式サイト",
"snippet": "東京都の公式サイト。くらし・手続き、観光・文化、健康・福祉、産業・労働、防災・環境など、東京都の総合的な情報を掲載。"
},
...
]
}
参考記事:
https://zenn.dev/motokikando/articles/354aeb843cc4dd
5. まとめ
- APIとは、異なるアプリケーション間で情報をやり取りするための橋渡し役
- その中でもWeb APIは、HTTP/HTTPSで外部のWebサーバーとやり取りするためのもの
6. 参考記事
https://mintaku-blog.net/api-difference/
https://tsuyopon.xyz/2019/01/31/understand-4-http-methods/
https://qiita.com/unsoluble_sugar/items/b080a16701946fcfce70
https://developer.mozilla.org/ja/docs/Web/HTTP/Status
https://developer.mozilla.org/ja/docs/Glossary/Response_header
https://apidog.com/jp/blog/how-to-use-json-in-api-response/