Web APIの利用

Delphi活用

 DelphiでWebサービスが提供するAPIを扱う方法をExchangeRates APIを例に紹介します。

RESTコンポーネント(RESTClient、RESTRequest、RESTResponse)

DelphiのRESTコンポーネントからAPIを利用します。
使用例を示した方がわかりやすいと思いますので、APIはエンバカロのホームページでも紹介されているExchangeRates APIを使います。
このAPIは、為替レートの取得に使うことができます。

RESTコンポーネント

このプログラムでは、RESTClient、RESTRequest、RESTResponseの3つのRESTコンポーネントを使用します。

プログラム例

APIで取得した情報をTJSONValueオブジェクトに代入するまでを示します。

procedure TForm1.Button7Click(Sender: TObject);
var
  jValue, jV: TJSONValue;
  JSONObject: TJSONObject;
  LJPY, LUSD, LYPD, DYen: Double;
  i,m, IYen: Integer;
  St1, St2, LOutput: String;
  SL: TStringList;
begin
//オブジェクトインスペクタで設定しない場合は以下のコメントアウトを解除する
  //RESTClient1.BaseURL := 'http://api.exchangeratesapi.io/v1';
  //RESTClient1.AddParameter('EndPoint','latest',TRESTRequestParameterKind.pkGETorPOST);
  //RESTClient1.AddParameter('access_key', '5accc574727d0bc8007b881234567890',TRESTRequestParameterKind.pkGETorPOST);
  //RESTRequest1.Resource := 'latest';
  //RESTRequest1.Method := TRESTRequestMethod.rmGET;
  //RESTRequest1.Response := RESTResponse1;
  //RESTRequest1.Response.ContentType := 'application/json';
  //RESTRequest1.Response.ContentEncoding := 'UTF-8';

  RESTRequest1.Execute;   //   ExchangeRates API の実行

  jValue := RESTResponse1.JSONValue;  // 取得情報をTJSONValueオブジェクトに代入  

  Memo1.Lines.Add(jValue.ToString); //取得したJsonを文字列にして表示

エンバカロのホームページの紹介記事

ExchangeRates APIをRESTコンポーネントから利用する例はエンバカロのホームページでも詳しく解説されています。
しかし、JSONから情報を取り出して為替レートを取得する部分の記述がありませんので別ページで紹介します。

JSONからの情報取り出し

DelphiによるJSONからの情報取得はこちらのページで紹介します。

ExchangeRates APIのJSONの中身

{
"success": true,
"timestamp": 1618443847,
"base": "EUR",
"date": "2021-04-14",
"rates": {
"AED": 4.401602,
"AFN": 92.987438,
"ALL": 123.189782,
"AMD": 622.325441,
"ANG": 2.150997,
"AOA": 771.454377,
"ARS": 111.049893,
"AUD": 1.550998,
"AWG": 2.156941,
"AZN": 2.046165,
"BAM": 1.960773,
"BBD": 2.419639,
"BDT": 101.557685,
"BGN": 1.956108,
"BHD": 0.4518,
"BIF": 2355.859391,
"BMD": 1.198301,
"BND": 1.602747,
"BOB": 8.262446,
"BRL": 6.775187,
"BSD": 1.198391,
"BTC": 1.9067596e-5,
"BTN": 90.06308,
"BWP": 13.096988,
"BYN": 3.135003,
"BYR": 23486.695865,
"BZD": 2.415529,
"CAD": 1.499979,
"CDF": 2391.808752,
"CHF": 1.105916,
"CLF": 0.030816,
"CLP": 850.318038,
"CNY": 7.824422,
"COP": 4381.9464,
"CRC": 734.603479,
"CUC": 1.198301,
"CUP": 31.754971,
"CVE": 110.932648,
"CZK": 25.94405,
"DJF": 212.962255,
"DKK": 7.437344,
"DOP": 68.255016,
"DZD": 158.571629,
"EGP": 18.777483,
"ERN": 17.976802,
"ETB": 49.55004,
"EUR": 1,
"FJD": 2.452563,
"FKP": 0.870416,
"GBP": 0.869667,
"GEL": 4.140164,
"GGP": 0.870416,
"GHS": 6.926206,
"GIP": 0.870416,
"GMD": 61.113259,
"GNF": 11983.008607,
"GTQ": 9.248383,
"GYD": 250.707366,
"HKD": 9.305333,
"HNL": 28.903569,
"HRK": 7.57158,
"HTG": 97.906362,
"HUF": 358.507893,
"IDR": 17515.083611,
"ILS": 3.931206,
"IMP": 0.870416,
"INR": 89.904135,
"IQD": 1751.316633,
"IRR": 50454.456016,
"ISK": 151.714206,
"JEP": 0.870416,
"JMD": 179.460912,
"JOD": 0.849552,
"JPY": 130.510579,
"KES": 127.98481,
"KGS": 101.611855,
"KHR": 4847.126741,
"KMF": 492.801162,
"KPW": 1078.470959,
"KRW": 1338.046775,
"KWD": 0.361276,
"KYD": 0.998693,
"KZT": 516.331626,
"LAK": 11287.993862,
"LBP": 1825.846885,
"LKR": 241.461698,
"LRD": 206.832071,
"LSL": 17.555151,
"LTL": 3.538271,
"LVL": 0.72484,
"LYD": 5.410369,
"MAD": 10.702619,
"MDL": 21.535088,
"MGA": 4535.568261,
"MKD": 61.636388,
"MMK": 1689.632611,
"MNT": 3415.939059,
"MOP": 9.586206,
"MRO": 427.793183,
"MUR": 49.357594,
"MVR": 18.514034,
"MWK": 943.661381,
"MXN": 24.066602,
"MYR": 4.947184,
"MZN": 73.899259,
"NAD": 17.5549,
"NGN": 455.949342,
"NIO": 42.036495,
"NOK": 10.054341,
"NPR": 144.100848,
"NZD": 1.677843,
"OMR": 0.461273,
"PAB": 1.198391,
"PEN": 4.348335,
"PGK": 4.229665,
"PHP": 58.092767,
"PKR": 183.160095,
"PLN": 4.554208,
"PYG": 7547.686137,
"QAR": 4.363013,
"RON": 4.926575,
"RSD": 117.877158,
"RUB": 91.127306,
"RWF": 1171.339041,
"SAR": 4.494591,
"SBD": 9.559982,
"SCR": 18.14974,
"SDG": 455.955933,
"SEK": 10.143077,
"SGD": 1.600804,
"SHP": 0.870416,
"SLL": 12252.625895,
"SOS": 699.807988,
"SRD": 16.960723,
"STD": 24839.742882,
"SVC": 10.486172,
"SYP": 1506.944044,
"SZL": 17.554312,
"THB": 37.538567,
"TJS": 13.664046,
"TMT": 4.206036,
"TND": 3.287535,
"TOP": 2.735603,
"TRY": 9.677839,
"TTD": 8.146733,
"TWD": 33.952055,
"TZS": 2778.859514,
"UAH": 33.497945,
"UGX": 4315.378685,
"USD": 1.198301,
"UYU": 52.971442,
"UZS": 12589.347994,
"VEF": 256232928513.0559,
"VND": 27655.584381,
"VUV": 131.260508,
"WST": 3.033771,
"XAF": 657.576278,
"XAG": 0.047174,
"XAU": 0.00069,
"XCD": 3.238468,
"XDR": 0.841171,
"XOF": 660.854586,
"XPF": 120.009287,
"YER": 299.994695,
"ZAR": 17.244269,
"ZMK": 10786.147736,
"ZMW": 26.585877,
"ZWL": 385.853094
}
}
タイトルとURLをコピーしました