加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 03:38:02 所属栏目:百科 来源:网络整理
导读:背景:通常,在我们想要手动指定要在响应中返回的HTTP状态代码的情况下,Rails会让我们使用 a nice set of pre-defined human-readable Ruby symbols,而不是显式使用这些代码的数值. 我们可以执行以下操作,例如: render text: "hurray!",status: :ok 这当然最
背景:通常,在我们想要手动指定要在响应中返回的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中没有符号表示,所以我必须使用实际的数值.

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

初始化/ constants.rb

NEEDS_UPDATE_CODE = 242

在我的控制器中,我这样渲染:

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

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

解决方法

我在写这个问题时找到了答案.由于我现在找不到任何副本,所以我会发布这个答案以防其他人有同样的问题.

初始符号表示 – 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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读