我定义了一个路由器,如下所示:
get("/api/cars", CarController, :cars)
Run Code Online (Sandbox Code Playgroud)
通过这种方式,我cars在函数内部CarController解析params随get请求传递的所有内容。我的cars函数现在正在使用一个case语句,因此如果提供了一些参数,请执行某些操作。我的问题是如何解析路由器中的参数名称,例如,如果我收到这样的 get 请求,/api/cars?type=coupe
我如何在get路由器上匹配该请求,因为我想单独处理它而不是使用该cars函数。
长话短说,我认为您无法匹配路由器中的 query_params,这取决于处理路由的控制器操作。因此,在这种情况下,您可以在控制器操作中对 query_params 进行模式匹配:
路由器扩展程序
get "/api/cars", CarController, :cars
Run Code Online (Sandbox Code Playgroud)
汽车控制器.ex
defmodule CarController do
use MyAppweb, :controller
def cars(conn, %{"type" => type} = params) do
...
end
def cars(conn, params) do
...
end
end
Run Code Online (Sandbox Code Playgroud)