Phoenix将404和500渲染为JSON

bri*_*njb 5 elixir phoenix-framework

我在没有使用该--no-html选项的情况下启动了一个凤凰项目,现在我正在尝试确保404500错误呈现为JSON.该项目始于凤凰城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.

Ole*_*ann 8

你有没有更新config.exs

config :my_app, MyApp.Endpoint,
  # ...
  render_errors: [accepts: ~w(html json)],
  # ...
Run Code Online (Sandbox Code Playgroud)

什么样的HTML返回?也许它是你的开发环境的phoenix调试页面,你可以禁用它config/dev.exs

config :my_app, MyApp.Endpoint,
  # ...
  debug_errors: false,
  # ...
Run Code Online (Sandbox Code Playgroud)

  • 抓住我关于`debug_errors`无法在开发中工作的评论.我把它设置在我的`config/config.exs`而不是我的`config/dev.exs`中,它覆盖了它. (6认同)