2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WebでAPIを叩く

Posted at

はじめに

API(Application Programming Interface)を利用することは、開発者にとって欠かせないスキルですが、理解が難しいと感じて1年間避けてきました。しかし、今年こそは理解し、実際に試してみることにしました。その結果、意外にも簡単にできたので、まとめてみます。

WebAPIとは

WebAPIは、ウェブ上で異なるソフトウェア同士が情報をやり取りするための一連の定義やプロトコルです。これにより、異なるプログラム間でデータを共有し、相互に連携させることが可能です。本記事では、Web上でAPIを操作することで、その仕組みを感覚的に理解していきます。

WebAPIを叩くイメージ

image.png
WebAPIではURLで欲しいデータを指定してWebサーバーにアクセスすることで、サーバーからXML形式やJSON形式のデータを取得します。
URLにアクセスすることをリクエスト、返ってくるデータをレスポンスと言います。

実際に叩いてみる

ブラウザで、以下のurlを打ち込んで見てください。
https://sysbird.jp/toriko/api/?apikey=guest&keyword=抹茶&format=json

下の写真のようになったでしょうか?この、謎の文字の大群がレスポンスです。
image.png

リクエスト(URL)の解説

image.png
通常、APIを用いるにはAPIkeyというものを取得する必要がありますが、お菓子の虜というサイトで提供されているAPIではその必要なく手軽に試せるので、今回はこちらを用いました。
サイトにはリクエストURLやパラメータ、利用規約などの情報が得られます。
本記事では先ほどのURLに用いた情報のみ抜粋して説明するので、詳しくはサイトをご覧ください。

基本仕様

項目 内容
プロトコル REST
レスポンス XML形式、JSON形式、JSONP形式
リクエストURL https://sysbird.jp/toriko/api/

パラメータ

パラメータ 項目名 説明
apikey APIキー(必須) "guest"固定
format レスポンスの形式 xml, json, jsonp
keyword キーワード お菓子の名称で部分一致検索。UTF8でURLエンコーディング

パラメータは?で始めた後、&で複数繋げることができます

レスポンスの解説

先ほどのリクエストから、レスポンスとして、
お菓子の名称に"抹茶"が含まれるお菓子のデータがjson形式で返される
と予測されます。改めて見返してみましょう。
image.png

おかしいですね。数字と文字の暗号が返されました。
JSONは一般的にエンコードされます。エンコードとは、全角文字や制御文字も問題なく送信するために半角文字に置き換える手法です。それではエンコードされたデータをデコードしましょう。Syncerというサイトがおすすめです。
整形前のところにレスポンスのデータを貼り付けてください。
image.png
下にスクロールし、'ビューアー'をみてください。デコードされています! 今度はちゃんとお菓子の名称に"抹茶"が含まれるお菓子のデータがjson形式で返されていますね!
スクリーンショット 2024-01-06 23.45.38.png

最後に

これでAPIの理解はできました。次は、実際に開発でAPIを使ってみようと思います!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?