-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.js
125 lines (91 loc) · 3.94 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
/**
* REST API
*/
// APIのパス
const apiPath = 'https://lmg1tnw1k3.execute-api.ap-northeast-1.amazonaws.com/v1/api/';
// APIキー
const apiKey = 'BGU1V3ZoCO7Lq5AT59XKh6nLYCKXm1mkk0kOyps1';
// 結果エリア
const resultStatusCodeArea = document.getElementById('result-status-code');
const resultHeadersArea = document.getElementById('result-headers');
const resultBodyArea = document.getElementById('result-body');
// 結果エリア初期テキスト
const resultStatusCodeAreaText = 'ここに、ステータスコードの結果が表示されます。';
const resultHeadersAreaText = 'ここに、レスポンスヘッダーの結果が表示されます。';
const resultBodyAreaText = 'ここに、レスポンスボディの結果が表示されます。';
// 結果エリアをリセット
const resultResetButton = document.getElementById('result-reset');
resultResetButton.addEventListener('click', () => {
resultStatusCodeArea.innerHTML = resultStatusCodeAreaText;
resultHeadersArea.innerHTML = resultHeadersAreaText;
resultBodyArea.innerHTML = resultBodyAreaText;
});
// 結果エリアを初期化
resultResetButton.click();
// GETボタンを取得
const getButton = document.getElementById('get');
// GETボタンをクリック時に、GETメソッドで「REST API」にアクセス。
getButton.addEventListener('click', async () => {
// 結果エリアをリセット
resultResetButton.click();
// パラメータを取得
const city = document.getElementById('get-param').value;
// リクエストパスを作成
const request_path = apiPath + 'weather?city=' + city;
// APIにGETでアクセス
const response = await fetch(request_path, {
headers: {
'x-api-key': apiKey, // リクエストヘッダーにAPIキーを設定
}
});
// ステータスコード取得
const statusCode = response.status;
// レスポンスヘッダー取得しJSON形式に変換
const headers = {};
response.headers.forEach((value, key) => {
headers[key] = value;
});
// レスポンスボディをresponseオブジェクトをJSONデータとして取得
const data = await response.json();
// 結果エリアに表示:ステータスコード
resultStatusCodeArea.innerHTML = statusCode;
// 結果エリアに表示:レスポンスヘッダー
resultHeadersArea.innerHTML = JSON.stringify(headers, null, 2);
// 結果エリアに表示:レスポンスボディ
resultBodyArea.innerHTML = JSON.stringify(data, null, 2);
});
// POSTボタンを取得
const postButton = document.getElementById('post');
// POSTボタンクリック時に、POSTメソッドで「REST API」にアクセス。
postButton.addEventListener('click', async () => {
// 結果エリアをリセット
resultResetButton.click();
// パラメータを取得
const city = document.getElementById('post-param').value;
// APIにPOSTでアクセス
const response = await fetch(apiPath + 'rain', {
method: 'POST',
headers: {
'x-api-key': apiKey, // リクエストヘッダーにAPIキーを設定
'Content-Type': 'application/json',
},
body: JSON.stringify({ // オブジェクトをJSON形式のテキストに変換してリクエストボディを設定
'city': city,
}),
});
// ステータスコード取得
const statusCode = response.status;
// レスポンスヘッダー取得しJSON形式に変換
const headers = {};
response.headers.forEach((value, key) => {
headers[key] = value;
});
// レスポンスボディをresponseオブジェクトをJSONデータとして取得
const data = await response.json();
// 結果エリアに表示:ステータスコード
resultStatusCodeArea.innerHTML = statusCode;
// 結果エリアに表示:レスポンスヘッダー
resultHeadersArea.innerHTML = JSON.stringify(headers, null, 2);
// 結果エリアに表示:レスポンスボディ
resultBodyArea.innerHTML = JSON.stringify(data, null, 2);
});