Elixir Phoenix句柄获取带有参数的请求

时间:2019-04-19 14:03:44

标签: elixir

我定义了一个看起来像这样的路由器:

get("/api/cars", CarController, :cars)

通过这种方式,在cars的{​​{1}}函数内部,我解析了CarController请求传递的所有params。我的get函数现在正在使用cars语句,因此,如果提供了某些参数,请执行某些操作。我的问题是如何解析路由器中的参数名称,例如,如果收到类似case的获取请求 我要如何在/api/cars?type=coupe路由器上匹配它,因为我想单独处理它而不是使用get函数。

1 个答案:

答案 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