ユーさんは見た!#11 happyなhAPpI
以前、こんな事象が話題になったかと思います。
――― ある日、Twitter(現:X)で表示されたメッセージ。
「API呼び出しの回数制限を超えました」
アプリで再読み込みしてみても、表示させたい内容が表示されません。
悲しいですね。unhappyです。
ただ、この事象によって、「API」という言葉や存在の認知度が高まったのではないかと勝手に感じています。
今回はそんな「API」について、見ていきたいと思います。
ユーさんは見た!
----------------------------------------
概要
- ◎APIって、何?
- ◎リクエストとレスポンス ~リクエスト~
- ◎リクエストとレスポンス ~レスポンス~
APIって、何?
そもそもAPIとはどのようなものなのでしょうか。
APIは、「Application Programming Interface」の略で、プログラムとプログラムをつなぐもの(および、そのデータの送受信についてのルール)です。
ソフトウェアの一部としてプログラムに実装されている機能や、保有されているデータを、そのソフトウェアの外部(他のアプリケーションやサービスなど)から利用することができます。
なお、Webサービスで利用されているAPIはWeb APIと呼ばれます。
Web APIの例としては、REST APIやSOAP APIなどがあります。
そしてこのAPIは、処理内容を送信(要求)する「リクエスト」と、その処理結果が返答(応答)される「レスポンス」で構成されており、それらで実現することができる処理内容は多岐にわたります。
冒頭で記載したTwitter(X)の場合は、X Developer Platform(開発者プラットフォーム)やPlatform Use Guidelines(プラットフォーム使用ガイドライン)によると、
公開されているXの情報へのアクセスやポスト(ツイート)の検索、アカウントのプロフィールや設定の管理、ユーザの管理…などなど、APIで様々なことができるそうです。便利ですね!
Twitter(X)と言えば、弊社にもXの公式アカウントがございます。
もしよろしければ、ぜひチェックやフォローしてみてください♪
⇒こちら!
リクエストとレスポンス ~リクエスト~
先述のように、APIは「リクエスト」と「レスポンス」で構成されています。
リクエストは、処理対象に対して行いたい処理内容を示し、ユーザやプログラムから送信される情報にあたります。
例えば、APIでXのアカウントのプロフィールの情報の参照を行う場合は、処理対象が「Xのアカウントのプロフィールの情報」、処理内容が「~の参照」、といったところでしょうか。
このAPIのリクエストは、主に下記の要素で構成されています。
- ①エンドポイント
- ②HTTPメソッド
- ③リクエストヘッダー
- ④リクエストボディ
- ⑤リクエストパラメータ
①エンドポイント
APIリクエストが送信される対象のURI(URL)です。これは、外部のサーバやサービスが提供する特定の機能やデータにアクセスするための識別子にあたります。例えば、「https://~」の形で示されます。
②HTTPメソッド
APIリクエストで実行される操作(アクション)を示します。例えば、以下のようなものがあります。
- ・GET:データの取得
- ・POST:データの作成
- ・PUT:データの更新
- ・DELETE:データの削除
③リクエストヘッダー
APIリクエストについての追加情報を含む部分です。これには、認証情報やContent-Type、アクセス制御(アクセス許可)などが含まれます。
Content-Typeは送信するデータの形式を示します。(例:application/json)
④リクエストボディ
一部のAPIリクエストで必要な場合は、主にJSON(JavaScript Object Notation)形式やXML(Extensible Markup Language)形式のデータが含まれます。
⑤リクエストパラメータ
APIリクエストに追加情報を提供するためのキーと値のペアです。
なお、似た単語である「クエリパラメータ」は、ここではなく①のエンドポイントのURI(URL)の「?」より右(後)の部分に含まれます。
これらの重要な要素が組み合わさって、APIリクエストとなります。
このAPIリクエストを送信すると、サーバはそれを受け取り、処理します。
リクエストとレスポンス ~レスポンス~
そしてレスポンスは、ユーザやプログラムへ返ってきた情報にあたります。
このAPIのレスポンスは、ステータスコードやレスポンスヘッダー、レスポンスボディといった要素で構成されています。
例えば、下記のように構造化された形で情報が返却されます。
◎JSON形式の場合の例
{
"result": {
"status_code": "200",
"message": "successful",
"data": {
"user_id": 12345,
"username": "hoge_user",
"email_address": "fuga@example.com"
}
}
}
◎XML形式の場合の例
<result>
<status_code>200</status_code>
<message>successful</message>
<data>
<user_id>12345</user_id>
<username>hoge_user</username>
<email_address>fuga@example.com</email_address>
</data>
</result>
ステータスコード(status_code)は、リクエストが成功したか、失敗した(エラーが発生した)かの状態を示します。上記の例での「200」は、成功したことを示しています。一方、この値が例えば「404」だと、リクエストした先のリソースが見つからないというエラーが発生したことを示しています。
また、ヘッダーには、追加のメタデータが含まれ、レスポンスボディには要求されたデータが含まれます。
なお、ユーザが利用するアプリケーションの場合は、これらのデータがアプリケーション内で処理され、ユーザに表示される情報として活用されます。
ソフトウェアやプログラム同士をつなぐAPI。
今後、IoT(Internet of Things)デバイスや人工知能(AI)との連携においても、APIはますます重要な役割を果たすと言われています。
そのためには、APIキーやトークンなどを用いてセキュリティを確保し、権限を持った正当なユーザであることを確認する「認証」の仕組みの整備などが、今後も大切になると考えられます。
----------------------------------------
今回はAPIについて、少しですが見ていきました。
今日では、様々なAPIが利用されています。Web上で利用できるあんな機能やこんなサービスも、APIの活躍のおかげということが多々あるでしょう。感謝ですね。
そして、APIによって生活がさらに豊かになったり、向上したりするなら、まさにhappyです。
――――――――――――――――――――――――――――――――――――――――
※掲載情報は、記事執筆日時点のものです。
――――――――――――――――――――――――――――――――――――――――
ここまでご覧くださり、ありがとうございました!
弊社では現在、社長ブログ・営業ブログ・技術者ブログと様々なブログを展開しております。ぜひ他の記事もご覧ください!
※上記のうち、技術者ブログのこれまでの記事はこちらからどうぞ!
「ユーさんは見た!」次回もお楽しみに♪
-P.S. keyword-
#IT #engineer #エンジニア #tech #技術 #技術者 #システム #開発 #APIコール
#API連携 #クラウドネイティブアプリケーション #マイクロサービスアーキテクチャ
#テクノロジー #technology #system #app #development