Как обработать маршрут, не найденный в пространстве имен в Rails? - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь выставить наше приложение через общедоступные API.Я написал код API в качестве движка и установил его в своем приложении.

Допустим, я определил маршрут /api/users, который будет обрабатываться созданным мной механизмом API.

Мы такжеиметь общий путь, определенный в конце определения маршрутов, который обрабатывает все другие маршруты, так как мы используем инфраструктуру внешнего интерфейса.

Если пользователь неправильно называет общедоступный API как /api/user-detail, он обрабатывается в определенном общем пути.

rout.rb

mount FtApi::Engine => "/api"
match "*a", controller: :assets, action: :index, via: [:get, :post, :patch]

Я хочу обработать любую неопределенную ошибку маршрутов в пространстве имен api в движке, но путь фиксируется подстановочным контроллером маршрута.

Как я могу обработать неопределенную ошибку маршрутов в пространстве имен api в определенном движке Rails?

1 Ответ

0 голосов
/ 06 июня 2019

Вы можете остановить захват любого случайного маршрута подстановочным знаком, применив ограничения на основе запроса.

Подробнее см. Здесь Ограничения на основе запроса и Расширенные ограничения

Посмотрите на приведенный ниже код. Не проверял это, но это пример того, как вы можете добавить ограничения в маршруты.

match "*a", controller: :assets, action: :index, constraints: RouteConstraint.new, via: [:get, :post, :patch]

А затем добавить этот код в ограничениях или инициализаторах

class RouteConstraint
  def matches?(request)
    not request.path.include?('api')
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...