凤凰渲染将404和500错误呈现为JSON格式

8
我开始了一个 Phoenix 项目,未使用--no-html选项,并尝试确保404500错误以 JSON 形式呈现。该项目始于 Phoenix 1.1.0,已更新至 1.1.4
我修改了config/config.exs文件的render_errors(在config :my_app, MyApp.Endpoint下)为[view: MyApp.ErrorView, format: "json", accepts: ~w(json)]
所有路由都接受 JSON,目前没有任何路由接受 HTML。
我修改了web/web.ex文件,在view函数中删除了 Phoenix.HTML 的使用,还修改了web/views/error_view.ex,以呈现 JSON。
但是此时404500错误仍然返回 HTML。
1个回答

13

你更新了 config.exs 吗?

config :my_app, MyApp.Endpoint,
  # ...
  render_errors: [accepts: ~w(html json)],
  # ...

返回的HTML是什么样的?也许它是针对您的dev环境的Phoenix调试页面,您可以在config/dev.exs中禁用它。

返回的HTML是什么?也许是你的开发环境下的Phoenix调试页面,你可以在config/dev.exs中关闭它。

config :my_app, MyApp.Endpoint,
  # ...
  debug_errors: false,
  # ...

是的,我按照原帖中的说明更新了我的config/config.exs文件。经过仔细检查,发现这是开发环境下的Phoenix调试页面,感谢你指出来。但是将debug_errors改为false似乎并没有在开发环境中生效。 - brittonjb
但在“prod”环境中运行它似乎一切正常。因此,我将其标记为正确答案。 - brittonjb
6
取消我关于“debug_errors”在开发环境下不起作用的评论。我已将其设置在我的“config/config.exs”文件中,而不是被覆盖的“config/dev.exs”文件中。 - brittonjb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接