2016-07-19 2 views
1

Я создаю простой API с использованием Rails 5. Я следил за этим видеоуроком here, который использует жемчужину jsonapi-resources. Я пошел немного дальше и фактически установил некоторую защиту API, используя драгоценные камни.Цепь фильтра остановлена ​​как: обеспечить_valid_accept_media_type визуализировано или перенаправлено Завершено 406 Неприемлемая ошибка

# Gemfile 
source 'https://rubygems.org' 

gem 'rails', github: 'rails/rails' 
gem 'sqlite3' 
gem 'puma' 
#gem 'pg' 
gem 'jsonapi-resources', '~> 0.7.1.beta2' 

# Security 
gem 'rack-attack' 
gem 'rack-protection' 
gem 'secure_headers' 
gem 'brakeman' 
gem 'rack-cors' 

gem 'omniauth' 
gem 'omniauth-oauth2' 
gem 'devise' 
gem 'devise_token_auth', git: 'git://github.com/lynndylanhurley/devise_token_auth.git' 
gem 'omniauth-twitter' 
gem 'omniauth-facebook' 
gem "omniauth-google-oauth2" 
gem 'omniauth-github' 
gem 'omniauth-twitch' 
gem 'omniauth-instagram' 

gem 'pundit' 
gem 'dynamic_sitemaps' 
gem 'faker' 

group :development, :test do 
    gem 'byebug', platform: :mri 
    gem 'better_errors' 
end 

group :development do 
    gem 'listen', '~> 3.0.5' 
    gem 'spring' 
    gem 'spring-watcher-listen', '~> 2.0.0' 
end 

gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] 

Я следил за видео и другие сообщения в блоге, и я получаю следующее сообщение об ошибке:

Started GET "/collections.json" for 14.144.15.10 at 2016-07-19 00:26:03 +0000 
ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations" 
Processing by CollectionsController#index as JSON 
Filter chain halted as :ensure_valid_accept_media_type rendered or redirected 
Completed 406 Not Acceptable in 289ms (Views: 0.3ms | ActiveRecord: 0.0ms) 

И когда я захожу на страницу индекса для коллекций (http://mydevapp.com/collections.json) я получаю:

{"errors":[{"title":"Not acceptable","detail":"All requests must use the 'application/vnd.api+json' Accept without media type parameters. This request specified 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'.","code":"406","status":"406"}]} 

ответ

1

Так что с API никогда не было проблем. Из-за моего ограниченного опыта работы с API я просто посещал эту страницу, но с тех пор, как я добавил драгоценные камни безопасности, он разрешил доступ к данным, вызывая вызовы API.

РЕШЕНИЕ: Я использовал Postman как мой клиент REST для совершения звонков на мой API, но вы можете использовать любые, что вам может понравиться.