【サンプルと解説】WEBAPIの使用方法【json】

f:id:okoko0000:20211230130829p:plain

本日はAPIの使い方を見ていきます。
Web開発に必須のWebAPIって聞いたことありますよね。
実務では当たり前のように使用するので、少しでも参考にしていただければ幸いです。

こんな人に見てほしい
そもそもWebAPIって何?
WebAPIってどうやって使うの?
APIの出力の方法が分からない

それでは下記サンプルコードを見ていきましょう!

サンプルコード

using System;
using System.Xml.Linq;
using System.Collections.Generic;
using System.Net;
using System.IO;
using Newtonsoft.Json.Linq;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            String url = "http://api.openweathermap.org/data/2.5/weather?q=[Tokyoなど]&appid=[APIkey]";
            //「url」の情報を持った「request」というインスタンスを生成
            WebRequest request = WebRequest.Create(url);
            //上記のURLへの新しいリクエストを作成
            Stream response = request.GetResponse().GetResponseStream();
            //「response」の情報を持った「reader」というインスタンスを生成
            StreamReader reader = new StreamReader(response);
            //JObject
            var json1 = JObject.Parse(reader.ReadToEnd());
            Console.WriteLine(json1);

        }
    }
}

出力結果

{"coord":{"lon":139.6917,"lat":35.6895},"weather":[{"id":801,"main":"Clouds","description":"few clouds","icon":"02d"}],"base":"stations","main":{"temp":283.15,"feels_like":283.15,"temp_min":281.85,"temp_max":284.73,"pressure":1005,"humidity":47},"visibility":10000,"wind":{"speed":0.45,"deg":111,"gust":0.45},"clouds":{"all":20},"dt":1640829908,"sys":{"type":2,"id":2001249,"country":"JP","sunrise":1640814627,"sunset":1640849788},"timezone":32400,"id":1850144,"name":"Tokyo","cod":200}

上記のようなサンプルコードを実行すれば出力結果が返ってきます。

サンプルコードの簡単な流れとしましては下記となります。

[http://api.openweathermap.org/data/2.5/weather?q=[Tokyoなど]&appid=[APIkey]]のURLの内容を変数に入れる

色々な処理をする

Jsonデータを出力する

それでは1つずつ内容をみていきましょう。

String url = "http://api.openweathermap.org/data/2.5/weather?q=[Tokyoなど]&appid=[APIkey]";

上記はhttpで始まるAPIの内容を「url」という変数に代入します。
上記APIkeyはOpenWeatherMapというサイトで入手出来、都市名とkeyをいれればその都市の天気データを入手できます。
アカウントは作る必要がありますが無料で利用出来ますので、是非ご利用ください。

WebRequest request = WebRequest.Create(url);

「url」の内容を「request」を生成し代入します。
「WebRequest.Create」とは指定した URI に新しい WebRequest のインスタンスを初期化するという意味です。

Stream response = request.GetResponse().GetResponseStream();

「request」の内容を「response」に代入します。
「request.GetResponse().GetResponseStream()」とはインターネット リソースからデータ ストリームを返します
データストリームとはデータの流れを意味します。ここでは「request」の中身(データ)をresponseに入れていると考えていただければ大丈夫です。

StreamReader reader = new StreamReader(response);

「response」の内容を「reader」に代入します。
「StreamReader」とはテキストファイルを読み込む効果を持ちます。
ここでは「response」の中身(テキストファイルデータ)を「reader」に入れていると考えます。

var json1 = JObject.Parse(reader.ReadToEnd());
Console.WriteLine(json1);

ここでやっと読み込み、読み込んだデータをコンソールに出力します。
ポイントは「JObject.Parse」でjsonデータからデータを取得することが出来ます。
「ReadToEnd」とはテキストファイルの内容を一度に全て読み込みます。
「ReadToEnd」で読み込んだ代用を「JObject.Parse」で取得し、json1に代入します。
最後に「Console.WriteLine(json1)」でjsonを読み込んで、json1をコンソールに出力されます!


まとめ

APIから受け取ったデータを変数に代入→読み込み→json形式のデータを読み込み、変数に詰める→出力する
ざっくりと上記のような流れです。

私の感想としては「request.GetResponse().GetResponseStream()」などのお作法が分からない!です。
一つ一つ意味があり必要だとは思うので、慣れていきたいと思います。


APIは非常に便利な機能ですので、是非使いこなしたいですね!