我正在尝试在其中构建一个包含JSON服务的网站。所以我希望为不同的处理程序提供不同的错误处理。例如,notFound
必须返回HTML"未找到" Handler Html
中的{"error": "not found"}
和Handler Value
中的JSON值notFoundJson
。我怎样才能实现它?
即使我使用自己的get404
,Yesod' Handler Value
也不会在errorHandler
内返回HTML。
/api
内找到处理程序的返回类型吗?errorHandler
作为子网站并覆盖errorHandler
吗?答案 0 :(得分:2)
简单的解决方案:您无法做任何事情。这是客户关注的问题。
根据defaultErrorHandler
实现,接收客户端JSON错误的正确方法似乎是在请求中提供HTTP标头Accept: application/json
或查询参数?_accept=application/json
。
defaultErrorHandler
本身提供两种表示形式:一种用于text/html
客户端,另一种用于application/json
客户端。默认是前者。
更通用的解决方案:添加WAI middleware,为特定网址添加HTTP标头Accept: application/json
或查询参数?_accept=application/json
。