gpt4 book ai didi

ruby-on-rails - 添加自定义 HTTP 状态代码符号

转载 作者:数据小太阳 更新时间:2023-10-29 07:04:40 25 4
gpt4 key购买 nike

背景: 通常,在我们想要手动指定要在响应中返回的 HTTP 状态代码的情况下,Rails 会为我们提供 a nice set of pre-defined human-readable Ruby symbols使用,而不是明确使用这些代码的数值。

我们可以做类似下面的事情,例如:

render text: "hurray!", status: :ok

这当然最终与此相同:

render text: "hurray!", status: 200

在我的情况下,我想呈现自定义 HTTP 状态代码(我任意选择了数字 242)。显然,这段代码不是标准的,并且在 Rails 中没有符号表示,所以我必须使用实际的数值。

当前的解决方案:为了保持代码相对人类可读性,我在我的常量文件之一中放置了一个常量,如下所示:

initializers/constants.rb

NEEDS_UPDATE_CODE = 242

在我的 Controller 中,我这样渲染:

render text: "whatever I want to render", status: NEEDS_UPDATE_CODE

问题:这显然工作得很好,但我想知道,有没有办法为 Rails 添加自定义 HTTP 状态代码的新符号表示?

最佳答案

我在写问题时找到了答案。由于我目前在 SO 上找不到任何重复项,因此我将发布此答案以防其他人有同样的问题。

初始的一组符号表示-HTTP 状态代码映射位于 Rack::Utils模块,在一个名为 SYMBOL_TO_STATUS_CODE 的可访问散列中。此外,人类可读的状态代码映射位于 HTTP_STATUS_CODES 中。

为了在我的代码中使用符号表示,我只是在我的初始化程序中添加了这个:

Rack::Utils::SYMBOL_TO_STATUS_CODE[:application_needs_update] = 242

这允许我像这样使用该符号:

render text: "whatever I want to render", status: :application_needs_update

不幸的是,rails 日志只会显示状态码,例如:

Completed 242 in 363ms (Views: 8.6ms | ActiveRecord: 12.0ms)

对于不熟悉我的自定义代码的人来说,这并不是很有帮助。为了纠正这个问题,我可以将其添加到同一个文件中:

Rack::Utils::HTTP_STATUS_CODES[242] = "Application Needs Update"

因此,当使用此代码完成请求时,我的日志将显示:

Completed 242 Application Needs Update in 363ms (Views: 8.6ms | ActiveRecord: 12.0ms)

关于ruby-on-rails - 添加自定义 HTTP 状态代码符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22541008/

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