##環境
cloud9(api取得側)
local(api提供側)
ruby 2.6.3
Rails 6.0.2.1
##結論
controller
def index
uri = `curl -v -X GET "http://stage-smartyoyaku-env.ap-northeast- 1.elasticbeanstalk.com/api/v1/tasks" \
-H "Authorization: Bearer ここにTokenを書く"`
@test = JSON.parse(uri)
end
*取得できているかブラウザで確認します
viewfile
<%= @test %>
##それまでのエラー内容
cloud9のターミナルでcurlコマンドを入力すると。。
curl: (7) Failed to connect to localhost port 3000: Connection refused
調べて見るとサーバーが立ち上がってない場合かポート番号が間違っているかのようです。
ブラウザでlocalhost:3000にアクセスしましたが問題なし。port番号もあっていましたが、、
##もう一度整理
・cloud9側のアプリでcurlコマンドを叩いている。(取得する側)
・local環境の3000portでapiを提供しているアプリを立ち上げている。(提供する側)←ここ重要
ん?cloud9(インターネット上)からlocalには接続できないんじゃ、、
$ lsof -i:3000
$
cloud9上で3000portが使われているか確認→表示されない
つまりapiを提供する側はherokuなどでネットにurlを公開し、そこからデータを取ってくる必要があります。
##注意点
ターミナルでcurlコマンドを打つ場合とcontrollerに書く場合は微妙に書き方が違う。
controllerではcurlコマンドを``で囲む。
ターミナルの場合
$ curl -v -X GET "http://stage-smartyoyaku-env.ap-northeast-1.elasticbeanstalk.com/api/v1/tasks" \
-H "Authorization: Bearer ここにTokenを書く"
controllerの場合
def index
uri = `curl -v -X GET "http://stage-smartyoyaku-env.ap-northeast- 1.elasticbeanstalk.com/api/v1/tasks" \
-H "Authorization: Bearer ここにTokenを書く"`
end