В моем текущем проекте Phoenix у меня есть и :browser
конвейер, и :api
конвейер.Я хочу сделать разные сообщения об ошибках для каждого конвейера.Однако я не уверен, как этого добиться.
Мой router.ex
похож на:
scope "/api", AppWeb do
pipe_through(:api)
# ...
end
scope "/admin", AppWeb do
pipe_through :browser
# ...
end
Я хочу, чтобы все запросы к несуществующим маршрутам в /admin
отображалиШаблон ошибки HTTP, но все запросы на любой другой маршрут для отображения шаблона ошибки JSON.
В config.exs
У меня есть
render_errors: [view: AppWeb.ErrorView, accepts: ~w(json html)]
Однако яне уверен, как поступить с представлением ошибок.
Похоже, что функция template_not_found/2
будет вызываться автоматически при возникновении ошибки маршрутизации, однако эта функция не имеет аргумента conn
.Его аргументы: template
и assigns
.
Должен ли я попытаться проверить assigns
, чтобы попытаться определить, к какому маршруту поступал входящий запрос?Попытка осмотреть шаблон не показалась мне полезной, и попытка визуализации шаблона, похоже, заканчивается расширением .html
, даже если я пытаюсь посетить маршрут в /api
.