grape接口开发

第一步按照github上的文件配置https://github.com/intridea/grape

(1)gem'grape'然后bundleinstall

(2)在config.ru里面添加runTwitter::API

(3)在application.rb里面添加两句话

config.paths.addFile.join('app','api'),glob:File.join('**','*.rb')

config.autoload_paths+=Dir[Rails.root.join('app','api','*')]

(4)在路由里面添加mountTwitter::API=>'/'

完成以上几个步骤基本上就可以去写代码了,需要注意的是如果例子当中的moduleTwitter

classAPI<Grape::APIendend的Twitter是我们自己定义的文件夹,则(2)(4)里面就去掉Twitter就可以了。也就是只有一个api.rb文件。里面为classAPI<Grape::APIend

我做的步骤是

创建一个文件夹api,然后在这个文件夹下分别创建一个项目自己项目名字project的文件夹用来放每一个接口的方法,创建一个公共的api.rb文件也就是例子中的api,在创建一个helpers.rb文件专门用来放一些公共方法。

使用:在api里面主要是一堆mount,把helpers.rb里面的类以及project下的类mount进来

require'helpers'

classAPI<Grape::API

version'v1',using::header,vendor:'project'

format:json

prefix:api

helpersProjectInterface::APIHelpers

mountProject::LoginOauth

mountProject::PhoneRecord

mountProject::UserInfo

end

这里值得注意的是需要把require一下helpers不然直接helpersProjectInterface::APIHelpers会报错

helpers.rb的文件结构:

require"uuidtools"

moduleProjectInterface

moduleAPIHelpers

defwarden

env['warden']

end

......

end

end

在project文件夹下的user_info.rb文件结构:

moduleProject

classUserInfo<Grape::API

format:json

helpers::ProjectInterface::APIHelpers

end

end

这样之后差不多就可以定义自己的路由,请求的方法,参数什么的

desc'Returnstoken.'

paramsdo

requires:login_name,type:String,desc:"login_name."

requires:password,type:String,desc:"password."

end

接口路由

resource:usersdo

post:get_tokendo

authenticate!//helpers里面的方法

end

end

然后就是curl的测试。curl-XPOST-H'Content-Type:application/json'-d'{"login_name":"admin","password":"123456"}'http://localhost:3000/api/users/get_token

上面的curl是一句话。需要注意的是post请求都是以-d方式传参数,get以问号方式传递。然后在每个接口路由前面都会自动加了一个api源于前面的一句prefix:api

以上个人总结,大虾指正

api

相关推荐