2016-07-19 33 views
1

Ich baue eine einfache API mit Rails 5. Ich folgte diesem Video-Tutorial here, das die jsonapi-resources gem verwendet. Ich ging ein bisschen weiter und richtete einige API-Sicherheit mit Edelsteinen ein.Filterkette angehalten als: ensure_valid_accept_media_type gerendert oder umgeleitet Abgeschlossen 406 Nicht akzeptabler Fehler

# 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] 

Ich habe das Video und andere Blog-Posts gefolgt, und ich erhalte die folgenden Fehler:

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) 

Und wenn ich die Index-Seite für Sammlungen (http://mydevapp.com/collections.json) besuchen erhalte ich:

{"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"}]} 

Antwort

1

So gab es nie ein Problem mit der API. Aufgrund meiner begrenzten Erfahrung mit APIs besuchte ich einfach die Seite, aber da ich die Sicherheits-Edelsteine ​​hinzugefügt hatte, erlaubte es nur den Zugriff auf die Daten durch API-Aufrufe.

LÖSUNG: Ich habe Postman als meinen REST-Client verwendet, um Aufrufe an meine API zu senden, aber Sie können alle verwenden, die Sie mögen.