路由路径的语法差异

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了路由路径的语法差异相关的知识,希望对你有一定的参考价值。

在rails路由文件中,指定

Rails.application.routes.draw do
  namespace :api, defaults: { format: :json }, :constraints => {:subdomain => "api"}   do

将在api.domain.tld/api/[...]生成一个可操作的URL

要删除重复,可以指定路径。但是,我已经看到:path => "",:path => "/",建议。

这两者之间有什么实际区别?

答案

:path => "":path => "/"没有区别

例如,使用rake routes的routes.rb(路径中没有正斜杠)

namespace(:api_namespace, :path=>"v1", :constraints => {:subdomain => "api_subdomain"}) do
  resources :todos
end

生成的路线是

  api_namespace_todos GET    /v1/todos(.:format)          api_namespace/todos#index {:subdomain=>"api_subdomain"}
                        POST   /v1/todos(.:format)          api_namespace/todos#create {:subdomain=>"api_subdomain"}
 new_api_namespace_todo GET    /v1/todos/new(.:format)      api_namespace/todos#new {:subdomain=>"api_subdomain"}
edit_api_namespace_todo GET    /v1/todos/:id/edit(.:format) api_namespace/todos#edit {:subdomain=>"api_subdomain"}
     api_namespace_todo GET    /v1/todos/:id(.:format)      api_namespace/todos#show {:subdomain=>"api_subdomain"}
                        PUT    /v1/todos/:id(.:format)      api_namespace/todos#update {:subdomain=>"api_subdomain"}
                        DELETE /v1/todos/:id(.:format)      api_namespace/todos#destroy {:subdomain=>"api_subdomain"}

和routes.rb(在路径中使用正斜杠)

namespace(:api_namespace, :path=>"/v1", :constraints => {:subdomain => "api_subdomain"}) do
  resources :todos
end

要么

namespace(:api_namespace, :path=>"v1/", :constraints => {:subdomain => "api_subdomain"}) do
      resources :todos
end

用上面代码生成的路由是

api_namespace_todos GET    /v1/todos(.:format)          api_namespace/todos#index {:subdomain=>"api_subdomain"}
                        POST   /v1/todos(.:format)          api_namespace/todos#create {:subdomain=>"api_subdomain"}
 new_api_namespace_todo GET    /v1/todos/new(.:format)      api_namespace/todos#new {:subdomain=>"api_subdomain"}
edit_api_namespace_todo GET    /v1/todos/:id/edit(.:format) api_namespace/todos#edit {:subdomain=>"api_subdomain"}
     api_namespace_todo GET    /v1/todos/:id(.:format)      api_namespace/todos#show {:subdomain=>"api_subdomain"}
                        PUT    /v1/todos/:id(.:format)      api_namespace/todos#update {:subdomain=>"api_subdomain"}
                        DELETE /v1/todos/:id(.:format)      api_namespace/todos#destroy {:subdomain=>"api_subdomain"}

在两种情况下产生的具有正斜杠(即/)且没有正斜杠的路线完全相同。

它的rails用于处理在URL中正确放置正斜杠,并允许开发人员在语法上更灵活。所以实际上你是否在路径中提出斜线并不重要。

以上是关于路由路径的语法差异的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段11——vue路由的配置

VSCode自定义代码片段11——vue路由的配置

VSCode自定义代码片段11——vue路由的配置

vue路由对象($route)参数简介

vue知识点-$route和$router

在下面的代码片段中的剩余 ='passthrough' 处的代码中出现语法错误