gpt4 book ai didi

ruby-on-rails - Rails 中优雅的 API 版本控制

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

目前,我正在为我们的 Rails 应用程序中的 REST API 实现版本控制。有没有一种方法可以实现这一点,以便您只在新版本中定义新功能?比如说:

我有一个用户 Controller 和一个产品 Controller 。产品在 V1 和 V2 之间保持不变,但用户发生了变化。如果我们可以设置它,那么如果我调用产品的 V2,我的应用程序知道它不存在并且只是使用最新的 Controller 版本(在本例中为 V1),那就太好了。这将使我们不必为每个版本创建一套全新的 Controller ;我们只会为已更改的特定功能创建新 Controller 。

下面是我们的 Routes.rb 的一个片段,诚然,我不知道如何解决这个问题。任何帮助将不胜感激!

namespace :api do
scope module: :v1, constraints: ApiConstraints.new(version: 1) do
resources :users
resources :products
end
scope module: :v2, constraints: ApiConstraints.new(version: 2) do
resources :users
end
end

最佳答案

一段时间以来我一直使用相同的策略,最近改变了方法——诚然我有偏见,因为我也是我们使用 VersionCake 的新方法的作者之一。 .

这种方法仅对我们的有效负载或 View 进行版本控制,毕竟 View 是客户端之间的契约(Contract),如果有违反契约(Contract)的更改,则版本需要更改。在 VersionCake 中,您可以像这样控制您的 View :

app/views/products/show.v1.rabl
app/views/products/show.v2.rabl
app/views/users/show.v1.rabl

根据您的问题,重要的特定功能是 VersionCake 会优雅地降级到最新的受支持版本。在上面的示例中,请求版本 2 的 users/1.json 的客户端将收到 users/show.v1.rabl 的有效负载。

综上所述,这需要采用新的版本控制方法,因此它可能不是最佳答案,但我认为这是一个值得考虑的选项。

关于ruby-on-rails - Rails 中优雅的 API 版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12229499/

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