Как настроить маршрут Феникс, который принимает несколько параметров в строке запроса - PullRequest
0 голосов
/ 07 июня 2018

Я хочу создать маршрут в Фениксе, который будет принимать 2 параметра запроса.

get "/items?id=:id&action=:action", ActionController, :index_by

Но я получаю следующую ошибку:

(Plug.Router.InvalidSpecError) :identifier in routes must be made of letters, numbers and underscores

Я заметил, что когда я удаляю второй параметр, он прекрасно компилируется, поэтому я предполагаю, что это как-то связано с разделителем & для выделения параметров в строке запроса.

Есть ли другой способуказать несколько параметров, чтобы различать маршрут?

1 Ответ

0 голосов
/ 10 июня 2018

Определения маршрутов в основном для «чистых URL-адресов», поскольку они соответствуют пути запроса (без строки запроса).

Имея это в виду, вы можете определить свой маршрут следующим образом

get("item/:id/:action", ActionController, :index_by)
#Or
get("/items", ActionController, :index_by)

Первое определение маршрута будет захватывать id и action из пути запроса, например, GET / items / 1 / edit даст вам %{"id"=>1, "action"=>"edit"} в ваших параметрах.

Второе захватит id и action из строки запроса.например, GET "/items?id=1&action=delete" даст вам %{"id"=>1, "action"=>"delete"} в ваших параметрах

Обратите внимание, что определение второго маршрута, в отличие от первого, не требует наличия либо id, либо action в строке запроса, поэтомувам не гарантируется, что эти параметры будут доступны в ваших параметрах.

...