回答編集履歴

2

別例

2021/11/01 11:32

投稿

attakei
attakei

スコア2740

test CHANGED
@@ -37,3 +37,41 @@
37
37
  手元の環境で試す感じだと、クエリパラメータを`client.get()`に渡す際には名前付きで渡すとうまくいくようでした。
38
38
 
39
39
  なお、[APIドキュメント](https://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/localsearch.html#request-param)にもあるのですが、出力フォーマットを変えるのは`format`ではなく`output`のようです。
40
+
41
+
42
+
43
+ 別例:
44
+
45
+
46
+
47
+ ```diff
48
+
49
+ def list
50
+
51
+ q = {
52
+
53
+ + 'appid' => ENV['YAHOO_API'],
54
+
55
+ + 'query' => params[:name],
56
+
57
+ + 'output' => 'json'
58
+
59
+ - appid: ENV['YAHOO_API'],
60
+
61
+ - query: params[:name],
62
+
63
+ - format: 'json'
64
+
65
+ }
66
+
67
+ client = HTTPClient.new
68
+
69
+
70
+
71
+ request = client.get(ENV['YAHOO_URI'], q)
72
+
73
+ @api_params = JSON.parse(request.body)
74
+
75
+ end
76
+
77
+ ```

1

誤読したので、APIリクエストが通る実装を回答

2021/11/01 11:32

投稿

attakei
attakei

スコア2740

test CHANGED
@@ -1,10 +1,6 @@
1
- 少なとも、掲載されているコードには違和感のある箇所がありますね。
1
+ ※誤読したので、回答を大き変えています
2
2
 
3
3
 
4
-
5
-
6
-
7
- ※強調用の表示です
8
4
 
9
5
  ```diff
10
6
 
@@ -12,11 +8,13 @@
12
8
 
13
9
  q = {
14
10
 
15
- + appid: ENV['YAHOO_API'],
11
+ appid: ENV['YAHOO_API'],
16
12
 
17
13
  query: params[:name],
18
14
 
15
+ + output: 'json'
16
+
19
- format: 'json'
17
+ - format: 'json'
20
18
 
21
19
  }
22
20
 
@@ -24,7 +22,9 @@
24
22
 
25
23
 
26
24
 
25
+ + request = client.get(ENV['YAHOO_URI'], query: q)
26
+
27
- + request = client.get(ENV['YAHOO_URI'], q)
27
+ - request = client.get(ENV['YAHOO_URI'], q)
28
28
 
29
29
  @api_params = JSON.parse(request.body)
30
30
 
@@ -34,20 +34,6 @@
34
34
 
35
35
 
36
36
 
37
- APIを指定ろう`q.appid`と、クエスト先となるだろう`client.get()`の第1引数、全同じ環境変数`YAHOO_API`が使われてます
37
+ 手元の環境で試感じだと、クエリパラメータを`client.get()`に渡す際には名前付き渡すとうまくいくようでした
38
38
 
39
- 名前からだと何を指していか分かりづらいですが、エラの内容からすとAPIURLしょう。
39
+ なお、[APIドキュメント](https://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/localsearch.html#request-param)にもあですが、出力フォマットを変えるのは`format`はなく`output`のよです
40
-
41
-
42
-
43
- だとすると、APIキーを指定するべき箇所にURLを指定している状態になっています。
44
-
45
-
46
-
47
- 次の2点をしたほうが良いでしょう。
48
-
49
-
50
-
51
- - APIキーをどうやって設定しているかの確認を、きちんとする
52
-
53
- - `q.appid`に設定している内容を、↑の確認をした上で正しいものにする