gpt4 book ai didi

http - HTTP API 状态代码的自定义文本

转载 作者:可可西里 更新时间:2023-11-01 16:26:41 26 4
gpt4 key购买 nike

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

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

Postman REST Client相同:

Postman status with custom response code

我想做的是自定义“客户端错误”文本,这样响应实际上会显示如下内容:

442 Forced Password Reset

这是否可能,或者是否在规范中某处规定 4xx 类的任何自定义状态代码都将被所有客户端简单地解释为“客户端错误”?

(我一直在查看 relevant Play documentation on Statuses,但没有看到任何自定义文本的选项——只有状态代码整数本身。)

最佳答案

查看源代码,我很快就找到了以下内容:

  1. Play 只是将状态码存储在 RepsonseHeader 中,而不是字符串
  2. Play 使用 Netty,并使用 valueOf 将状态代码转换为 HttpResponseStatus,这基本上只是状态代码的 case 语句,如果不标准则根据范围进行默认设置。
  3. 虽然您可以使用所需的原因短语定义一个新的 Netty HttpResponseStatus,但没有任何方法可以将它添加到 valueOf 方法(它是静态的)。

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

您也许可以使用某种后置过滤器来修改响应并更改原因短语,但我不知道它是如何工作的,或者即使可以在 Play 中编写这些类型的过滤器!

最后,原因短语并不是那么重要,因为客户通常不会(也不应该)实际解析它。

关于http - HTTP API 状态代码的自定义文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29440983/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com