我定义了一个看起来像这样的路由器:
get("/api/cars", CarController, :cars)
通过这种方式,在cars
的{{1}}函数内部,我解析了CarController
请求传递的所有params
。我的get
函数现在正在使用cars
语句,因此,如果提供了某些参数,请执行某些操作。我的问题是如何解析路由器中的参数名称,例如,如果收到类似case
的获取请求
我要如何在/api/cars?type=coupe
路由器上匹配它,因为我想单独处理它而不是使用get
函数。
答案 0 :(得分:2)
长话短说,我认为您无法在路由器中匹配query_params,这取决于处理路由的控制器动作。 因此,在这种情况下,您可以在控制器操作中模式匹配query_params:
router.ex
get "/api/cars", CarController, :cars
car_controller.ex
defmodule CarController do
use MyAppweb, :controller
def cars(conn, %{"type" => type} = params) do
...
end
def cars(conn, params) do
...
end
end