使用Grape快速开发API

Grape简介 Grape是一个基于Rack的非常轻量级的框架,用于快速的开发API。一般来说,Rails对于单独的API来说,太过于重量级;而Sinatra虽然足够小巧,但是又没有为开发API提供足够的默认支持(如果从可控制性,灵活性上来说,Sinatra可能更好一些,但是如果有专门的更好用的工具,为什么不用呢?)。 安装非常简便: $ gem install grape 或者使用在自己的Gemfile中,与其他的gem一起搭建API: gem 'grape' 为既有系统添加API 简单一试 之前的一篇介绍ActiveRecord在既有系统中使用的文章中,我使用ActiveRecord为既有的数据库visitor中的三个表(visitor, listGroup, listGroupItem)建立了ruby对应的模型。现在我们可以为这些模型包装一组API,以方便客户端(消费者)可以通过web来访问。 module MySys class API < Grape::API format :json resource :visitors do desc "get all visitor information" get do Visitor.limit(20) end end end end 首先,MySys::API扩展了Grape::API。format定义我们的API会产生JSON格式的输出,resource定义了这一组API是为资源visitors提供的,因此访问API的url为: http://localhost:9292/visitors/ 当然,grape提供一个很方便的设置prefix,可以使得API的路径更有意义: format :json prefix "mysys" url则相应地变为: http://localhost:9292/mysys/visitors/ 处理参数 在对参数的处理上,grape也非常灵活,比如接上例,我们想要获取某一个具体的用户的信息: http://localhost:9292/visitors/8a9d82b13b9786e1013b978766150001 我们可以添加一个新的endpoint: desc "return a visitor" params do requires :visitor_uid, :type => String, :desc => "visitor id" end route_param :visitor_uid do get do Visitor....

August 4, 2013 · 1 min · 邱俊涛 | Juntao Qiu