我正在使用他们的'版本'在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
- &gt; app/views/api/users.rabl
/api/v2/users
- &gt; app/views/api/users.rabl
/api/v1/users
- &gt; app/views/api/v1/users.rabl
/api/v2/users
- &gt; app/views/api/v2/users.rabl
答案 0 :(得分:0)
我正在使用Grape Entity:https://github.com/intridea/grape-entity
所以我在名为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
答案 1 :(得分:0)
我终于采取了Jan的方式。
resource :users, rabl: "v1/users" do