【问题标题】:Phoenix Rendering 404 and 500 as JSONPhoenix 将 404 和 500 渲染为 JSON
【发布时间】:2016-07-18 11:46:03
【问题描述】:

我在没有使用 --no-html 选项的情况下启动了一个 phoenix 项目,现在我试图确保 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 函数中的 use Phoenix.HTML,并已修改 web/views/error_view.ex 以呈现 JSON。

然而此时404500 错误仍然返回html。

【问题讨论】:

    标签: elixir phoenix-framework


    【解决方案1】:

    你更新你的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,
      # ...
    

    【讨论】:

    • 是的,我更新了我的config/config.exs,如原始帖子中所述。经过仔细检查,它是开发环境的 phoenix 调试页面,感谢您指出这一点。但是在开发环境中将debug_errors 更改为false 似乎并没有改变。
    • 但是在prod 环境中运行它似乎正在解决问题。所以我将此标记为正确答案。
    • 暂无我对debug_errors 不在开发中工作的评论。我已将其设置在我的 config/config.exs 而不是覆盖它的 config/dev.exs 中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 2013-06-27
    • 1970-01-01
    相关资源
    最近更新 更多