grape接口开发

第一步按照github上的文件配置https://github.com/intridea/grape
(1)gem 'grape' 然后bundle install
(2)在config.ru里面添加 run Twitter::API
(3)在application.rb里面添加两句话
config.paths.add File.join('app', 'api'), glob: File.join('**', '*.rb')
config.autoload_paths += Dir[Rails.root.join('app', 'api', '*')]
(4)在路由里面添加 mount Twitter::API => '/'
完成以上几个步骤基本上就可以去写代码了,需要注意的是 如果例子当中的module Twitter
class API < Grape::API end end的Twitter是我们自己定义的文件夹,则(2)(4)里面就去掉Twitter就可以了。也就是只有一个api.rb文件。里面为class API < Grape::API end
我做的步骤是
创建一个文件夹api,然后在这个文件夹下分别创建一个项目自己项目名字project的文件夹用来放每一个接口的方法,创建一个公共的api.rb文件也就是例子中的api,在创建一个helpers.rb文件专门用来放一些公共方法。
使用:在api里面主要是一堆mount,把helpers.rb里面的类 以及project下的类mount进来

require 'helpers'
class API < Grape::API

version 'v1', using: :header, vendor: 'project'
format :json
prefix :api

helpers ProjectInterface::APIHelpers
mount Project::LoginOauth
mount Project::PhoneRecord
mount Project::UserInfo
end
这里值得注意的是需要把require 一下helpers 不然 直接helpers ProjectInterface::APIHelpers会报错

helpers.rb的文件结构:
require "uuidtools"

module ProjectInterface
module APIHelpers
def warden
env['warden']
end
......
end
end

在project文件夹下的user_info.rb文件结构:
module Project
class UserInfo < Grape::API
format :json
helpers ::ProjectInterface::APIHelpers

end
end
这样之后差不多就可以定义自己的路由,请求的方法,参数什么的
desc 'Returns token.'
params do
requires :login_name, type: String, desc: "login_name."
requires :password, type: String, desc: "password."
end
接口路由
resource :users do
post :get_token do
authenticate!//helpers里面的方法
end
end
然后就是curl 的测试。curl -X POST -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
以上个人总结,大虾指正
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值