2016-09-16 80 views
0

我试图找到一种方法来管理我的Rails API的不同版本。 不同的路由不是问题,当我在不同版本之间更改模型和数据库(Postgres)时,问题就开始了。在Rails API中管理不同版本的最佳做法是什么?谢谢你们版本控制API API

编辑:例子 - 当我将模型中的一个从V1改为V2时,问题就出现了。可以说,在V1中,我有一个名为'产品'的模型,我偶然将字符串'price'保存为字符串,而不是整数,在V2中,我看到了问题并进行了迁移,解决了问题。因为试图把字符串从整数列的修复提出了新的问题,现在V1 API被打破

+0

您是否试图保持一定程度的向后兼容性? –

回答

3

我喜欢做的是创造不同的端点

1)设置你的路由

namespace :api do 

    namespace :v1 do 
    resources :... 
    end 

    namespace :v2 do 
    resources :... 
    end 

end 

现在,你有你的终点,你可以创建你自己的控制器 我喜欢做的是

#app/controller/api_controller.rb 
class ApiController < ActionController::Base 

  layout false 
    ... 

end 

现在你在C有一个文件夹的方式每个版本ontroller文件夹

应用程序/控制器/ API/V1 应用程序/控制器/ API/V2

每个

现在你揭露你的需要

class Api::V1::MooController < ApiController 

end 

更新

您不能删除字符串值价格但您必须创建一个新的字段调用int_price。这样,API第1版仍然可以正确地响应串价格

现在,你还需要将填充int_price当过串价格被更新

我不知道的方法认为你应该有一个新的端点只是一个价格从字符串更改为整型,你可以只写一个方法if string转换为整数

我希望这有助于

+0

嘿,首先谢谢你。其次,我在我的问题中加入了更多关于我面临的问题的详细信息。我想你喜欢你读这个 –