Rails 5.2 возврат 406 с запросом Axios
У меня есть rails API в Rails 5.2 и интерфейс в Vuejs, использующий Axios для запроса API. Когда я спрашиваю с почтальоном на маршруте
[Получить] http://localhost:3000/foo
Я получаю ожидаемый ответ JSON.
Но когда я запрос с Аксиос :
import axios from 'axios'
export default {
getAll () {
return axios.get('http://localhost:3000/foo', {
headers: { 'Content-Type': 'application/json' }
})
}
}
Я получил этот ответ от сервера :
CleanwalksController#index отсутствует шаблон для этого формата запроса и варианта. запрос.форматы: ["text/html"] запрос.вариант: []
У меня есть следующая конфигурация / 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

Ответы - Rails 5.2 возврат 406 с запросом Axios / Rails 5.2 returning 406 with Axios Request

13.03.2019 12:21:07
Я думаю, что ваша проблема исходит из вашего взгляда, есть ли у вас файл с именем index.формат html.Эрб. В противном случае можно определить формат множественного ответа следующим образом :
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

06.01.2020 08:58:41
У меня была точно такая же проблема. Все отлично работало в моих спецификациях и в postman, но по какой-то причине я получал 406 с vue/axios.
После того как я долго теребил волосы я обнаружил опечатку в моем файле маршрутов:
namespace :v1, default: { format: :json } do
Это должно было быть по умолчанию (множественное число)
namespace :v1, defaults: { format: :json } do