Ruby on rails 在多个web服务上创建抽象api
我来自c#/.net/asp.net mvc/nancyfx,我正在考虑将Rails用于一个即将到来的项目 该项目涉及到创建一个统一/抽象api,该api将两个类似的web服务拉到一起,允许开发人员提供每个服务的实现,同时也通过单个api与它们交互。就像Ruby DBI对数据库所做的那样 在c#中,我将创建一个接口来定义所有服务实现必须遵守的契约(我使用在线文件存储服务作为示例来解释这个问题):Ruby on rails 在多个web服务上创建抽象api,ruby-on-rails,ruby,Ruby On Rails,Ruby,我来自c#/.net/asp.net mvc/nancyfx,我正在考虑将Rails用于一个即将到来的项目 该项目涉及到创建一个统一/抽象api,该api将两个类似的web服务拉到一起,允许开发人员提供每个服务的实现,同时也通过单个api与它们交互。就像Ruby DBI对数据库所做的那样 在c#中,我将创建一个接口来定义所有服务实现必须遵守的契约(我使用在线文件存储服务作为示例来解释这个问题): 公共接口提供程序 { i收集列表文件名(字符串文件夹); } 然后,我将为每个服务创建实现,例如d
公共接口提供程序
{
i收集列表文件名(字符串文件夹);
}
然后,我将为每个服务创建实现,例如dropbox:
public DropboxStorageProvider : IStorageProvider
{
public ICollection<string> ListFilenames(string folder)
{
var filenames = service.SomeCodeToGetFilenames(folder);
return filenames;
}
}
公共DropboxStorageProvider:IStorageProvider
{
公用ICollection列表文件名(字符串文件夹)
{
var filenames=service.SomeCodeToGetFilenames(文件夹);
返回文件名;
}
}
创建这种抽象的Ruby方法是什么?谢谢 据我所知,Ruby中没有接口,在C#、Java、Objective-C或Swift等静态类型语言中使用。在Ruby中,不能用一组属性和方法声明抽象实体。也不能强迫Ruby类符合这种抽象实体。相反,在Ruby中,人们通常编写单元测试以确保类的行为符合预期。所以Ruby中的单元测试有点像接口,它记录了类(方法和属性)的端点,并确保这些端点工作 这是我在为iOS应用程序构建用RubyonRails编写的API时的工作流程
谢谢!我了解到ruby没有任何类似于接口的特性,我也不是在寻找“接口的ruby实现”。我正在为我的案例寻找最佳实践,ruby wise。有什么建议吗?:-)感谢您使用工作流程更新您的答案。所以,我的假设正确吗?因为Ruby是duck类型的,所以只要用完全相同的方法和属性创建类,我就可以做与在c#中使用接口时相同的事情。是的,您可以用ListFilenames方法创建两个类。然后,您将实例化这些类中的对象并调用ListFileName。
public DropboxStorageProvider : IStorageProvider
{
public ICollection<string> ListFilenames(string folder)
{
var filenames = service.SomeCodeToGetFilenames(folder);
return filenames;
}
}