gpt4 book ai didi

api - 为不同的管道呈现不同的错误(:api and :browser)?

转载 作者:可可西里 更新时间:2023-11-01 15:28:49 27 4
gpt4 key购买 nike

在我当前的 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,接受:~w(json html)]

但是,我不确定如何处理错误 View 。

看起来 template_not_found/2 函数会在发生路由错误时自动调用,但是,这个函数没有 conn 参数。它的参数是 templateassigns

我是否应该尝试检查 assigns 以确定传入请求尝试访问的路由?尝试检查模板似乎没有帮助,并且尝试呈现的模板似乎都以 .html 扩展名结尾,即使我尝试访问 /api 下的路由

最佳答案

正如@JoséValim 所指出的,我没有正确看到 JSON 错误消息的原因是我是通过浏览器访问页面的。如果我正确设置标题 Accept: application/json根据我的要求,它起作用了。

template_not_founderror_view.ex 中发挥作用, 似乎只写 Phoenix.Controller.status_message_from_template(template) 就足够了.

关于api - 为不同的管道呈现不同的错误(:api and :browser)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56804183/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com