我有两个简单的API类:
class API::Root < Grape::API
version 'v1', :using => :path
mount API::Appointments => '/appointments'
end
和
class API::Appointments < API::Base
get do
end
end
问题是API::Appointments
生成路线:
GET /appointments/v1
而不是
GET /v1/appointments
这是假设的吗?我究竟做错了什么?版本路径组件不应该在任何其他路径组件之前与最终相反吗?
由于
答案 0 :(得分:2)
从您提供的示例中,您的资源文件(约会)继承自root.rb文件,该文件使用:path
来获取版本。此外,您使用mount API::Appointments => '/appointments'
安装到路径,这非常类似于前缀,因此将为您的路由添加前缀/appointments
,因此您看到的路线是您设置的。当我使用Grape对JSON api进行版本化时,我有一个基础root.rb类,它将挂载我的版本化API。
module API
class Root < Grape::API
mount API::V1::Root
end
end
然后,对于每个其他API版本,我有另一个root.rb文件,然后为该特定API安装资源文件。
module API
module V1
class Root < Grape::API
version 'v1' using: :path
mount API::V1::Appointments
end
end
end
使用此结构,您可以拥有资源类
module API
module V1
class Appointments < Grape::API
get do
end
end
end
end
它将被安装到路线/v1/appointments