RailsでAPIからデータを要求する

3335 ワード

多角形を使います。以下の例のIO API。


インストールする宝石


ジェムファイル
gem 'faraday'
gem 'json', '~> 2.5', '>= 2.5.1'
gem 'dotenv-rails', groups: [:development, :test]

実行
bundle

APIリクエストを作成するコントローラとビューの生成


rails g resource stock

今すぐオープン/設定/ルート。rbを追加します。



このルートを使用してAPIリクエストを作成し、同じルート上のブラウザに応答を表示します.

オープン/アプリ/ビュー/株式/検索し、それを埋める:



これは、我々は多角形APIからプルすることができます株価データを入力するフォームを与える.そして、if文では、コントローラから呼び出しを行った場合、APIからレスポンスに設定されたレスポンス変数があります.
if params['stock']
  @response = Searchstock::Search.by_stock(params['stock'])
end

APIモジュールの作成


さあ、実際にsearchstockにAPIリクエストを作成するプロセスに入りましょう.
Faradayがインストールされていますが、コントローラ内から直接呼び出すことはできません.
内部に/コントローラ/懸念/searchstockを追加します.rbフォルダの名前を変更しないようにしてください.
私はsearchstockを作成します.RB/懸念/searchstock.RB
モジュール内のクラスとクラス内のメソッドは何でも名前を付けることができます.
上のコードから、Searchstock ::Searchを呼ぶことによって、我々はそれをすることができます.ティッカーパラメータを使用したBytle Squareメソッドは、SearchstockへのAPI呼び出しを行いますが、Env [' apiune key ']はどうなりますか?
EV [' apiKey key ']を多角形の実際のAPIキーに置き換えることはできますが、コード内のAPIキーを残すことは正しくありません.そこで、APIキーを環境変数とします.
まず、APIキーをローカルマシンの環境変数としましょう.
これを行うには、dotenv gemを使用します.

インストールする


この行をアプリケーションのgemfileの先頭に追加します.
宝石' dotenvレール'グループ
を実行します.

次にファイル名を追加します.アプリケーションのルートにenv.ファイル名を変更しないようにしてください.APIキーを最初の行に追加します.
アピーキーキー
ApakieキーをopenWeatherによって提供された実際のキーに置き換えます.
あなたの仕事をコミットするつもりならば、.envファイルを.Gigtignore Gitはそれを追跡しないように.

コントローラからの呼び出しAPI


最終的な部分のために、あなたのコントローラ/アプリ/コントローラ/StockCenコントローラの検索行動にこれを加えてください.RB
if params['stock']
  @response = Searchstock::Search.by_stock(params['stock'])
end
以前に命名されたモジュール、クラス、および関数の名前に一致するようにしてください.

結果をチェックする


さて、サーバーを開きます
柵サーバー
そして、あなたのブラウザーからhttp://localhost:3000/stocks/searchを訪問してください.
応答を確認するティッカーを検索します.