如何通过Grape API获取路线

时间:2017-06-20 15:12:38

标签: ruby-on-rails api grape

我使用宝石,葡萄作为api。 我试图通过命令rake grape:routes

获取api url
    namespace :grape do
      desc "routes"
      task :routes => :environment do
        API::Root.routes.map { |route| puts "#{route} \n" }
      end
    end

但我到了rake grape:routes

    #<Grape::Router::Route:0x007f9040d13878>
    #<Grape::Router::Route:0x007f9040d13878>
    #<Grape::Router::Route:0x007f9040d13878>
    #<Grape::Router::Route:0x007f9040d13878>
    ...

我想要这样的东西。

    version=v1, method=GET, path=/services(.:format)
    version=v1, method=GET, path=/services/:id(.:format)
    ...

我的葡萄实施如下。这很有效。

    module API
      class Root < Grape::API
        version 'v1', using: :path
        format :json

        helpers Devise::Controllers::Helpers

        mount API::Admin::Services
      end
    end



    module API
      class Services < Grape::API
        resources :services do
          resource ':service_id' do
            ...
          end
        end
      end
    end

1 个答案:

答案 0 :(得分:6)

尝试将以下内容添加到 Rakefile 中,如proposal

中所述
desc "Print out routes"
task :routes => :environment do
  API::Root.routes.each do |route|
    info = route.instance_variable_get :@options
    description = "%-40s..." % info[:description][0..39]
    method = "%-7s" % info[:method]
    puts "#{description}  #{method}#{info[:path]}"
  end
end

按照提及的here

进行操作
desc "API Routes"
task :routes do
  API::Root.routes.each do |api|
    method = api.route_method.ljust(10)
    path = api.route_path
    puts "#{method} #{path}"
  end
end

并运行rake routes

还有一些宝石(grape_on_rails_routes&amp; grape-raketasks)是为此目的而建造的。您可能有兴趣看看它们。