2015-04-03 39 views
2

我在构建于Play框架的HTTP服务中编写了一个新端点,并且返回了特定错误的自定义状态代码(本例中为442)。当我测试的端点cURL,我收到预期的错误代码:HTTP API状态代码的自定义文本

... 
< HTTP/1.1 442 Client Error (442) 
.... 

而同样与Postman REST Client

Postman status with custom response code

我想要做的是自定义的“客户端错误“的文字,使得响应实际上读的东西,如:

442 Forced Password Reset 

这是可能的,或者是在T他在某处指出,4xx类的任何自定义状态代码都将被所有客户端解释为“客户端错误”?

(我一直在寻找通过relevant Play documentation on Statuses却看不到任何选项自定义文本只有状态码整数本身)。

回答

5

通过源代码,看它没多久我就发现以下内容:

  1. 只播放存储在RepsonseHeader的状态代码,而不是字符串
  2. 播放一个Netty,并接通状态代码为HttpResponseStatus使用的valueOf,这基本上只是在状态的情况下,声明代码,默认值基于范围,如果它不是' t标准。
  3. 虽然你可以用你想要的原因短语来定义一个新的Netty HttpResponseStatus,但没有办法将它添加到valueOf方法(它是静态的)。

因此,如果不改写Play!的某些部分,没有任何真正好的解决方案。

您可能可以使用某种后期过滤器来修改响应并更改原因词组,但我不知道如何工作,或者即使可以将这些类型的过滤器写入玩!。

最后,理由并不是真的那么重要,因为客户通常不会(也不应该)真正解析它。

+0

这就是我怀疑的答案(但并不希望)。谢谢! – mjswensen 2015-04-03 23:48:56