【问题标题】:more concise url route pattern in sinatrasinatra 中更简洁的 url 路由模式
【发布时间】:2012-11-24 00:29:07
【问题描述】:

每个人。

我正在使用 sinatra 构建一个 Web 应用程序。在api部分,有很多以公共前缀开头的路由,例如:

get '/v1/command_1' do; end
get '/v1/command_2' do; end
get '/v1/command_3' do; end
get '/v1/command_4' do; end
get '/v1/command_5' do; end

我想知道如何避免所有这些 '/v1' 前缀?我可以在一个路由中定义一次,而在其他路由中,我可以从 '/command_1' 或类似的东西开始吗?

提前致谢!

【问题讨论】:

    标签: ruby sinatra routes


    【解决方案1】:

    我以前没用过,但是 sinatra-contrib 项目的一个扩展可以让你像这样嵌套。

    http://www.sinatrarb.com/contrib/namespace.html

    然后你可以这样做:

    namespace '/v1' do
      get '/command_1' {}
      get '/command_2' {}
      # etc
    end
    

    【讨论】:

      【解决方案2】:
      get '/v1/command_:command' do |command|
        # ...
      end
      

      【讨论】:

      • 路线不是那么简单,抱歉我的描述不准确。 api 路由可以非常嵌套,例如 '/v1/users/1' 和 '/v1/teams/1'。
      • 抱歉,还是没看到。关键是,在你想要一个变量的地方,你放了一个冒号和一个名字。 /v1/users/1 看起来与 /v1/command_1 完全不同,所以我将其视为两种不同的模式 - 除非你没有告诉我:)
      • 嗨,阿马丹!这不是关于这种方法是对还是错,只是我认为mportiz08的答案更好。还是谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-13
      • 2011-07-02
      • 2015-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      相关资源
      最近更新 更多