前提条件
- バックエンドは
Rails
- 自作のAPIサーバーからデータを取る
-
vue_cli
で作成 - パッケージ管理は
npm
一次情報
手順
- axiosインストール
- export default {}内にサーバーとやり取りするコードを記述
- Rails側設定
axiosインストール(HTTP通信ができるようになる)
- pakage.jsonがあるディレクリに移動後下記のコマンド実行
$ npm install axios --save
サーバーとやり取りするコードを記述
- コンポーネント
methods
内にaxios
のコード追記
----------- template ----------- <script> import axios from [インストール先パス]; export default { name: 'test', data: { test: [] }, methods{ // メソッドreadが発火したら取りにいくという想定 read(){ axios .get('https://取得したいサーバドメイン名') .then((response) { // responseが実際に取得するデータ console.log(response); // responseの中のdata属性に取得したいデータが格納されている. // thisはvuecomponentオブジェクト 配列であるtestに格納している. // 取得するデータがJSONだとdataでいいっぽい APIそんな触らないから他のパターンもあるかも this.test = response.data; }) .catch((error) { // handle error console.log(error); }) }, } }; </script>
- 長々と書いたが、実際に気にするのはどこから取得するかと、取得したデータの格納先 今回記述したコードは
axios
のサンプルコードとほぼ同じ.サンプルコードを下記に示す.
const axios = require('axios'); // Make a request for a user with a given ID axios.get('/user?ID=12345') .then(function (response) { // handle success console.log(response); }) .catch(function (error) { // handle error console.log(error); }) .then(function () { // always executed });
Rails側設定
- CORS対策でRails側の設定が必要
gem 'rack-cors'
-
config/initializers/cors.rb
コメントアウトを有効に
# Be sure to restart your server when you modify this file. # Avoid CORS issues when API is called from the frontend app. # Handle Cross-Origin Resource Sharing (CORS) in order to accept cross-origin AJAX requests. # Read more: https://github.com/cyu/rack-cors Rails.application.config.middleware.insert_before 0, Rack::Cors do allow do origins 'http://データを贈りたいパス' resource '*', headers: :any, methods: [:get, :post, :put, :patch, :delete, :options, :head] end end
変更するのは
origins
の指定のみRailsサーバーを再起動させて、データをこれで取得できるはず.
Top comments (0)