我有一个ruby应用程序,它基本上是一个API服务器-可以调用服务器的IP地址和端口-来访问这个应用程序。
现在,我希望将其转换为一个常规的ruby web应用程序-它具有身份验证功能,并遵循REST结构。
执行此操作的最简单的/quickest方法是什么?
我还希望核心Ruby代码(实际上支持API)与REST绑定/身份验证模型分开--这样核心代码就可以单独更新。
发布于 2013-04-02 01:06:55
就我个人而言,我建议使用Rails和Rabl。如果你关心你的应用程序接口的版本控制(提示:你会的),那么Version Cake gem也是绝对必须的。人们通常不喜欢第三方API从他们的脚下改变。
对于身份验证,我建议使用用户id和令牌的组合,或者作为头部(即X-YOURAPP-TOKEN = ryan-a003c850e1
)传递,或者作为操作的参数传递。然后,通过在-
上拆分这个令牌来完成“身份验证”,然后找到用户记录,然后检查该用户的API是否与令牌的其余部分匹配。如果是,则应该对用户进行身份验证。将用户记录存储在@current_api_user
这样的实例变量中,以便可以在控制器中访问它。
您的控制器是在一个层次结构中设置的,其中您有一个包含此身份验证逻辑(作为before_filter
)的BaseController
,然后其他控制器继承该逻辑。如果你有任何其他的帮助器,他们也会进入这个控制器。显然,我假设您现在对Rails有所了解。
对于授权,请使用CanCan。它的自述文件和Wiki是关于如何使用它的很好的信息来源。您的API可能需要授权,即使您在最初的帖子中没有说明这一点。
使用与此类似的设置,这就是我如何构建Spree的应用程序接口的方法,您可以在这里看到:https://github.com/spree/spree/tree/master/api。
其他人会推荐在Rails上使用Sinatra,在Rails上使用Active Model Serializers。其他人仍然会建议您使用Hypermedia API而不是传统的REST接口。甚至有关于如何做到这一点的a book。
老实说,你自己决定使用什么。
https://stackoverflow.com/questions/15753950
复制相似问题