Rails 5.2 axios请求返回406
Rails 5.2 returning 406 with Axios Request
我有一个 rails API Rails 5.2 和一个 Vuejs 前端,使用 Axios 请求 API。
当我在路线
上向邮递员提出请求时
我得到了预期的 JSON 响应。
但是当我用 Axios 请求时:
import axios from 'axios'
export default {
getAll () {
return axios.get('http://localhost:3000/foo', {
headers: { 'Content-Type': 'application/json' }
})
}
}
我从服务器得到了这个响应:
CleanwalksController#index is missing a template for this request format and variant. request.formats: ["text/html"] request.variant: []
我有以下 config/cors.rb :
Rails.application.config.middleware.insert_before 0, Rack::Cors do
allow do
origins '*'
resource '*',
headers: :any,
methods: [:get, :post, :put, :patch, :delete, :options, :head]
end
end
我在尝试直接访问 http://localhost:3000/foo 时遇到了同样的问题。
这是我的控制器:
class FooController < ApplicationController
def index
@foo = foo.all
end
end
我认为你的问题来自于你的看法,你有一个名为index.html.erb的文件吗?否则,您可以定义多个响应格式如下:
class FooController < ApplicationController
def index
@foo = foo.all
respond_to do |format|
format.html { render :index }
format.json { render json: @foo, status: 200 }
end
end
end
我遇到了完全相同的问题。在我的规格和邮递员中,一切都完美无缺,但由于某种原因,我得到了 vue/axios.
的 406
经过多次纠结后,我发现我的路线文件中有一个拼写错误:
namespace :v1, default: { format: :json } do
应该是默认值(复数)
namespace :v1, defaults: { format: :json } do
我有一个 rails API Rails 5.2 和一个 Vuejs 前端,使用 Axios 请求 API。 当我在路线
上向邮递员提出请求时我得到了预期的 JSON 响应。
但是当我用 Axios 请求时:
import axios from 'axios'
export default {
getAll () {
return axios.get('http://localhost:3000/foo', {
headers: { 'Content-Type': 'application/json' }
})
}
}
我从服务器得到了这个响应:
CleanwalksController#index is missing a template for this request format and variant. request.formats: ["text/html"] request.variant: []
我有以下 config/cors.rb :
Rails.application.config.middleware.insert_before 0, Rack::Cors do
allow do
origins '*'
resource '*',
headers: :any,
methods: [:get, :post, :put, :patch, :delete, :options, :head]
end
end
我在尝试直接访问 http://localhost:3000/foo 时遇到了同样的问题。
这是我的控制器:
class FooController < ApplicationController
def index
@foo = foo.all
end
end
我认为你的问题来自于你的看法,你有一个名为index.html.erb的文件吗?否则,您可以定义多个响应格式如下:
class FooController < ApplicationController
def index
@foo = foo.all
respond_to do |format|
format.html { render :index }
format.json { render json: @foo, status: 200 }
end
end
end
我遇到了完全相同的问题。在我的规格和邮递员中,一切都完美无缺,但由于某种原因,我得到了 vue/axios.
的 406经过多次纠结后,我发现我的路线文件中有一个拼写错误:
namespace :v1, default: { format: :json } do
应该是默认值(复数)
namespace :v1, defaults: { format: :json } do