ruby-on-rails – 方法级别的Rails API版本控制
发布时间:2020-12-16 21:05:36 所属栏目:百科 来源:网络整理
导读:在.NET中,我们能够通过对它们进行注释来在方法级别对API进行版本化,并且只复制版本之间不同的方法.我已经转而使用Rails的产品团队,并试图弄清楚是否有任何东西可以帮助我在Rails中做到这一点.到目前为止我所见过的所有内容都建议将整个控制器命名为V1,V2等模
在.NET中,我们能够通过对它们进行注释来在方法级别对API进行版本化,并且只复制版本之间不同的方法.我已经转而使用Rails的产品团队,并试图弄清楚是否有任何东西可以帮助我在Rails中做到这一点.到目前为止我所见过的所有内容都建议将整个控制器命名为V1,V2等模块…当假设V1和V2之间只有1种方法不同时,可以大大减少V1和V2的数量.必要的重复.
谢谢. 解决方法
Ruby是一种非常灵活和丰富的语言,应该不难避免代码重复.
管理问题的一种简单方法是路由到适当的操作.在.NET中,您实际上通过注释方法路由请求,而不使用任何特殊语言功能. # API::V2 implements only special_method get '/api/v2/special_method',controller: 'API::V2',action: 'special_method' # all other actions from V2 are processed by V1 mount API::V1 => '/api/v1' mount API::V1 => '/api/v2' 另一种更高级的方法是使用模块来实现控制器动作(实例方法).然后,您可以在API的V2中重用相同的模块,并覆盖那些需要更改的方法. class API::V1 # implementaton of API::V1 include ImplV1 end class API::V2 # all the methods from V1 are available in V2 too include ImplV1 # override methods from V1 here include ImplV2 end 最后,一种更简单但不太灵活的方法是直接从V1继承V2: class API::V2 < API::V1 def special_method # ... end end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |