Как мне ограничить мой API, чтобы он принимал и отвечал только в формате json на Rails и Grape, я пробовал format :json
на своем контроллере Grape и (например) я могу получить к нему доступ на example.com/api/v1/ping.json, но я также могу получить к нему доступ через example.com/api/v1/ping.xml, example.com/api/v1/ping.foobar, и список расширений можно продолжить...
То, что я хотел бы сделать, это выдать ошибку на example.com/api/v1/ping.not_json_extensions.
Я использую:
- рельсы (4.1.1)
- виноград (0.7.0)
/config/routes.rb
mount API::Base => '/api'
/controllers/api/base.rb
module API
class Base < Grape::API
mount API::V1::Base
end
end
/controllers/api/v1/base.rb
module API
module V1
class Base < Grape::API
format :json
mount API::V1::Ping
end
end
конец
/controllers/api/v1/ping.rb
module API
module V1
class Ping < Grape::API
include API::V1::Defaults
desc 'Returns pong.'
get :ping do
{ ping: params[:pong] || 'pong' }
end
end
end
конец