Phoenix 渲染 404 和 500 为 JSON

Phoenix Rendering 404 and 500 as JSON

我在没有使用 --no-html 选项的情况下启动了一个 phoenix 项目,现在正试图确保 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,目前 none 接受 HTML。

我修改了 web/web.ex 文件以删除 view 函数中的 Phoenix.HTML 的使用,并且我修改了 web/views/error_view.ex 以呈现 JSON.

然而此时 404500 错误仍然 return html.

你更新你的 config.exs 了吗?

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

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

中将其禁用
config :my_app, MyApp.Endpoint,
  # ...
  debug_errors: false,
  # ...