Error handling 绕过Play的HttpErrorHandler处理4xx错误

Error handling 绕过Play的HttpErrorHandler处理4xx错误,error-handling,playframework,Error Handling,Playframework,我正在写一个游戏中的微服务。我希望我的控制器能够使用特定的JSON响应体生成4xx的客户端错误。但是,Play的默认HttpErrorHandler将生效,并用HTML文档替换我的响应正文 如何将我的回复原封不动地返回给客户 我已经考虑过提供一个定制的HttpErrorHandler,但这并不能访问我的控制器生成的响应;签名为: def onClientError(request: RequestHeader, statusCode: Int, message: String): Future[

我正在写一个游戏中的微服务。我希望我的控制器能够使用特定的JSON响应体生成4xx的客户端错误。但是,Play的默认HttpErrorHandler将生效,并用HTML文档替换我的响应正文

如何将我的回复原封不动地返回给客户

我已经考虑过提供一个定制的HttpErrorHandler,但这并不能访问我的控制器生成的响应;签名为:

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

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

客户端错误是由客户端引起的一种情况,Play不知道如何处理。其中包括格式不正确的标题、不存在的资源读取:没有可用于该路径的路由

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

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


举一个你想要达到的目标的例子会很方便,因为我不太清楚。

Hi@Igmar,令人尴尬的是,我不再看到我认为昨天看到的行为,它的行为就像你描述的那样,这就是我想要的。一定是用户混淆了-抱歉!