我想知道如何使用REST API提供Ruby应用程序。我可以基于Ruby的TCPServer API编写代码,但这似乎有点低级。你认为这将是一个很好的解决方案吗?或者你推荐更好的方法?如何为Ruby应用程序创建REST API?
回答
您可以使用Sinatra非常快速地编写小而集中的Web应用程序和轻量级REST服务。
在documentation节他们突出就这一问题对夫妇的视频:
亚当·威金斯和布雷克Mizerany目前西纳特拉和RestClient在RubyConf 2008。谈话详细介绍了Sinatra的基本理念,并反思了使用Sinatra构建真实世界的应用程序。
Adam Keys和Pragmatic Programmers在Sinatra上启动了一系列screencasts。前两集包括创建一个小型Web应用程序并创建一个REST服务。 5美元的流行音乐。
您还可以使用rails为好,但是这是一个有点矫枉过正...
我使用西纳特拉也开发简单的REST的解决方案。
事情是Sinatra在很多方面都非常灵活。您可以按照自己喜欢的方式构建自己的项目结构。 Usualy我们有一个lib/tmp /和public /目录以及一个config.ru和app.rb文件,但正如我所说,你可以建立任何你想要的。
要记住的是,Sinatra不仅仅是因为de M(模型)而是一个通常的MVC。对于简单CRUD Web应用程序使用sinatra,您只需加载一个gem即可。
require 'datamapper'
或其他您所选择像sqlite, sequel, ActiveRecord, ...
的,瞧你有你的下一个西纳特拉ORM。
在Sinatra下,您可以定义符合四个主要建议GET,PUT POST和DELETE的路线。
require 'rubygems'
require 'sinatra'
get '/' do
erb :home
end
get '/API/*' do
api = params[:splat]
@command_test = api[0]
@command_helo = api[1]
#...
def do_things(with_it)
#...
end
#...
end
__END__
@@home
helo
以及你得到了IDEIA :)
最后。学习Sinatra并不是浪费时间,因为它简单并且因为它为我提供了什么Web编程的基础。 我想在不久的将来,将“注入”Sinatra应用程序(机架应用程序)到Rails3项目中是可能的。
看看github,你会发现许多用Sinatra构建的项目。 欲了解更多结帐Sinatra :: Base。
对于简单的REST API,我还会考虑直接对Rack机架库进行操作(即,您可能不需要像Sinatra这样的框架)。例如,路由对于简单的情况可能非常容易。我在这里举了一个小例子:https://gist.github.com/4685445
设计RESTful API时涉及到几个层,每层都有几个有效的方法。
TCPServer确实是非常低的水平,因为你必须自己实现HTTP协议,这是不推荐的。
上一步是Rack,它处理所有低级HTTP细节。这就是Rails,Sinatra或Ramaze等所有Ruby Web框架都在使用的底层。它还可以确保您的应用程序在各种应用程序服务器上运行,如Passenger,Thin或Unicorn。
但即使Rack仍然是低级别的,它给了你HTTP,但是更高层次的框架把典型的网络程序设计拿出来了。对于API,您可以查看像Sinatra这样的最小框架,或者专门为API设计的框架,如Grape或Rails::API。这些将已经采用REST风格的API,所以你应该认为它们是非常合适的。
典型的RESTful API的特征是具有由可猜测(惯例驱动)URL标识的资源,以及基于HTTP方法(动词)(如GET,POST,PUT,DELETE和PATCH)的资源。要真正接受Roy Fielding描述的REST精神,您可以转向更完整的“超媒体”API。最明显的区别是答复更独立。它们具有定义明确的媒体类型(由您自己或现有规范定义),其中包含指向相关资源的链接,而不仅仅是数字ID。类似的回应包含描述可以执行的操作的模板/表格。 (还有更多,但在表面层面,这是你会注意到的)。
这使得人们和机器都可以更容易地发现API,并且它允许在演化API时有更大的自由度。可能存在性能缺陷,因为客户通常需要做更多的请求来实现同样的事情,但是这可以通过深思熟虑的设计和缓存来防止。 Garner专门用于提供简单的服务器端缓存。
您可以定义适合你的应用,常见于JSON或XML的顶部自己的媒体类型,或者你可以看一下现有的规范,特别是Collection+JSON,HAL和JSON-API。目前看起来HAL具有最大的吸引力,在各种平台上都可以使用several libraries。
JSON-API似乎并没有发生很多事情,但两个重要项目ActiveModel :: Serializer和Ember-data都采用了(并且同时开发)了这种格式,这意味着它可以成为Ruby/Rails世界的热门选择。
编辑:错字
- 1. 如何为现有的Ruby on Rails 5应用程序创建REST API?
- 2. 如何为java应用程序创建一个ruby API
- 3. 如何使用magento soap或rest API创建phonegap应用程序
- 4. 如何使用Django REST API创建Android应用程序
- 5. Rails设计应用程序为移动应用程序创建REST api
- 6. 无法为我的RoR应用程序创建REST API
- 7. 如何为我的应用程序创建安全的Rails REST Api?
- 8. 为应用程序创建休息API
- 9. 为应用程序交互创建API
- 10. 在Python中使用Parse.com REST API创建应用程序
- 11. 使用REST API在Openshift上创建应用程序
- 12. 如何为Yii2-basic-template创建REST API
- 13. REST Api为我的Qt应用程序
- 14. 如何为mac创建应用程序?
- 15. 如何为程序创建外部API?
- 16. 如何为移动应用程序创建安全的API
- 17. 如何通过API为Shopify应用程序卸载创建webhooks
- 18. 如何为项目/应用程序创建java api文档?
- 19. 如何在Laravel中创建REST API第一个Web应用程序
- 20. 如何创建没有视图的NodeJS应用程序?只有NodeJS REST API
- 21. [ruby]创建一个应用程序
- 22. Ruby未能创建应用程序
- 23. 如何创建一个REST风格的MeteorJS应用程序
- 24. 为EJB创建REST API
- 25. 如何创建Rest api,以及如何使用android应用程序来使用其余api
- 26. 如何使用nodejs创建POST rest api?
- 27. 创建REST API
- 28. 为移动和网站应用程序创建一个中心REST API
- 29. 如何为iOS和Android移动应用程序创建REST身份验证
- 30. 创建API,用于iPhone应用程序
+1西纳特拉。 – 2009-11-02 16:07:20