🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

472閲覧

Herokuの環境変数で「&」が使えない

tenchim

総合スコア8

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2021/02/26 11:24

編集2021/02/26 11:58

お世話になっております。
作成したポートフォリオで、楽天検索APIが機能しないエラーが発生したので、それについて質問させてください。

##起こっているエラー
アプリ内で楽天検索機能を使っても動かない。

##原因
楽天検索APIは以下のフォーマットで商品の検索を実施しています。

https://app.rakuten.co.jp/services/api/IchibaItem/Search/20170706?hits=20&page=1&applicationId=<自分のID>&keyword=<調べたいkeyword>

しかしHerokuの環境変数にこのURLをセットした後で検索機能を使ってみると、以下のURLで検索していることが分かりました。

https://app.rakuten.co.jp/services/api/IchibaItem/Search/20170706?hits=20&keyword=<調べたいkeyword>

つまり&page=1&applicationId=<自分のID>がなぜか省略されます。
その結果、Unauthorizedとなり、正常なリクエストが返されません。
https://gyazo.com/0cb541f7c73b4e18f772380c7bd3d49c

ローカルPCでは正常に動くので、**Herokuの環境変数ではおそらく&が使えないのでは?**と考えていますが、いくら調べても出てこないので、ご存じの方がいれば教えてください。

##2021/02/26 追記
楽天検索APIのURLをすべて環境変数に格納するのではなく、ApplicationIdだけ格納して、それをURLに埋め込めばいいのではないかと思います。
試してみてから、再度報告をいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takasima20

2021/02/26 11:58

& が使えないという根拠がよく分からないのですが?
CHERRY

2021/02/26 12:01

どのような方法で、設定しているのでしょうか?
tenchim

2021/02/26 12:29 編集

ご返信ありがとうございます。 HerokuのGUIで、上の質問内容の楽天検索APIのURLを環境変数に格納しました。 しかし環境変数に格納されている文字列の中で、「&」以下にある文字列が機能しませんでした。ですので「&」が使えないと判断いたしました。 いまapplicationIdのみを環境変数に格納し、URLを 'https://app.rakuten.co.jp/services/api/IchibaItem/Search/20170706?hits=20&page=1&applicationId=' + process.env.APPLICATION_ID + '&keyword=<調べたいkeyword>' と設定したところ、正常に動作いたしました。
tenchim

2021/02/26 13:19 編集

上のコメント内のURLで、「#039;」とありますが、これはシングルクオーテーション「'」です。 なぜか編集しても「#039;」となってしまうので、ここに注記いたします。
tenchim

2021/02/26 12:29

自己解決の方でも解決方法を示していますので、是非ご覧ください。
guest

回答1

0

自己解決

環境変数に

https://app.rakuten.co.jp/services/api/IchibaItem/Search/20170706?hits=20&page=1&applicationId=<自分のID>

とすべてのURLを格納するのではなく、applicaitonIdのみを格納すると、「&」が環境変数に含まれず正常に動作いたしました。

実際に使うときには

'https://app.rakuten.co.jp/services/api/IchibaItem/Search/20170706?hits=20&page=1&applicationId=' + <環境変数に格納したapplicationId> + '&keyword=<調べたいkeyword>'

のようにするとうまく動作するかと思います。

投稿2021/02/26 12:26

tenchim

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問