绕过Play的HttpErrorHandler获取4xx错误

时间:2017-09-04 12:07:28

标签: error-handling playframework

我正在Play中编写微服务。我希望我的控制器能够使用特定的JSON响应主体生成客户端错误(4xx)。但是,Play的默认HttpErrorHandler会启动,并用HTML文档替换我的响应正文。

如何才能将我的回复更改回客户端?

我已着手提供自定义HttpErrorHandler,但这并不能访问我的控制器生成的响应;签名是:

def onClientError(request: RequestHeader, statusCode: Int, message: String): Future[Result]

编辑:我无法再重现此问题。现在,错误处理程序没有启动 - 这是我期望的行为。很可能是某种形式的用户混淆/错误。

1 个答案:

答案 0 :(得分:1)

客户端错误是由客户端引起的条件,Play不知道如何处理。这包括格式错误的标头,不存在的资源(读取:该路径没有可用的路由)。

在所有情况下,这都不会触及控制器:它在路由之前处理。这也意味着没有可以传递的身体。

如果确实击中了控制器,您可以使用正确的响应代码和正文返回结果。如果它没有命中控制器,并且调用了错误处理程序,则需要根据请求本身返回响应。

你想要实现的目标的一个例子会很方便,因为这对我来说还不太清楚。