1

我正在使用 Ruby on Rails 4.1 上的 Grape gem 构建 Web API,并使用它们的“版本”功能。

示例代码在这里。

# app/api/api.rb
class API < Grape::API
  prefix 'api'
  format :json
  formatter :json, Grape::Formatter::Rabl
  default_format :json

  mount V1::Root
end

# app/api/v1/root.rb
module V1
  class Root < Grape::API
    version 'v1'
    resource :users, rabl: "users" do
      get '/' do
        @users = User.all
      end
    end
  end
end

# config/routes.rb
mount API => "/"

使用这些代码,app/views/api/users.rabl用于根据请求查看模板http://localhost:3000/api/v1/users

我想在请求中使用app/views/api/v1模板v1。有什么办法吗?

当前的

  • /api/v1/users->app/views/api/users.rabl
  • /api/v2/users->app/views/api/users.rabl

  • /api/v1/users->app/views/api/v1/users.rabl
  • /api/v2/users->app/views/api/v2/users.rabl
4

2 回答 2

0

我正在使用葡萄实体:https ://github.com/intridea/grape-entity

所以我在 v1 文件夹上创建了一个目录,名为entities

前任: api/v1/entities/token_response_entity.rb

module ExampleAPI::V1::Entities
  class TokenResponseEntity < Grape::Entity
    expose :token , documentation: { type: 'string', desc: 'Token String' }
  end
end

所以当我需要展示时,我只需要使用:

present tokens, with: ExampleAPI::V1::Entities::TokenResponseEntity

于 2014-10-29T19:56:12.020 回答
0

我终于选择了简的方式。

resource :users, rabl: "v1/users" do
于 2015-07-03T10:54:11.227 回答