我想知道如何使用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. 为应用程序交互创建API
- 7. 在Python中使用Parse.com REST API创建应用程序
- 8. 如何为程序创建外部API?
- 9. 如何创建没有视图的NodeJS应用程序?只有NodeJS REST API
- 10. [ruby]创建一个应用程序
- 11. 为EJB创建REST API
- 12. 如何创建Rest api,以及如何使用android应用程序来使用其余api
- 13. 如何使用nodejs创建POST rest api?
- 14. 如何为iOS和Android移动应用程序创建REST身份验证
- 15. 创建API,用于iPhone应用程序
- 16. 如何为使用MySQL数据库的android应用程序创建REST服务?
- 17. 优势的Ruby on Rails应用程序消耗REST API
- 18. 如何删除现有目录 - RUBY installfest创建应用程序
- 19. 在Facebook应用程序中使用Ruby/Sinatra和Rest-Graph创建signed_request
- 20. OneLogin - 创建应用程序api(AWS)
- 21. 如何创建Ruby程序子?
- 22. IntelliJ - 为Android Wear创建应用程序
- 23. O365创建使用REST API
- 24. 如何创建SaaS应用程序?
- 25. 如何使用API创建quickblox应用程序?
- 26. 如何使用流畅API创建Azure AD应用程序?
- 27. 如何使用电报API创建一个Android应用程序?
- 28. 如何使用HTML5 WebSocket API创建Spring WebSocket应用程序?
- 29. 如何为Java应用程序创建安装程序?
- 30. 如何为PHP应用程序创建安装程序?
+1西纳特拉。 – 2009-11-02 16:07:20