Routes 如何设置在查询字符串中使用多个参数的Phoenix路由

Routes 如何设置在查询字符串中使用多个参数的Phoenix路由,routes,phoenix-framework,Routes,Phoenix Framework,我期待在凤凰城生成一个路由,将接受2个查询参数 get/items?id=:id&action=:action,ActionController,:index\u by 但我得到了以下错误: (Plug.Router.InvalidSpecError) :identifier in routes must be made of letters, numbers and underscores 我注意到,当我删除第二个参数时,它编译得很好,所以我猜这与分隔符有关&将查询字符串中的参数分离出来 是

我期待在凤凰城生成一个路由,将接受2个查询参数

get/items?id=:id&action=:action,ActionController,:index\u by

但我得到了以下错误:

(Plug.Router.InvalidSpecError) :identifier in routes must be made of letters, numbers and underscores
我注意到,当我删除第二个参数时,它编译得很好,所以我猜这与分隔符有关&将查询字符串中的参数分离出来


是否有其他方法可以指定多个类似的参数来区分路由?

路由定义主要用于“干净URL”,因为它在请求路径上匹配,而没有查询字符串

记住这一点,您可以这样定义您的路线

get("item/:id/:action", ActionController, :index_by)
#Or
get("/items", ActionController, :index_by)
第一个路由定义将从请求路径捕获id和操作,例如GET/items/1/edit将在参数中为您提供%{id=>1,action=>edit}

第二个将从查询字符串中捕获id和操作。e、 g GET/items?id=1&action=delete将在参数中为您提供%{id=>1,action=>delete}

请注意,与第一个路由定义不同,第二个路由定义不强制查询字符串中存在id或操作,因此不能保证这些参数在参数中可用