С маршрутом, как:В Play, как включить настраиваемые параметры запроса в обратном URL? (Call)
GET /users/:id controllers.Users.view(id)
В контроллере я могу читать пользовательские backTo
строки запроса параметров, как это:
def view (id: String) = Action {r =>
val backTo = r.getQueryString("backTo") // read custom param
...
}
Допуская backTo
необязательный параметр строки запроса, что я не хотите включать в определение маршрутов (возможно, все действия могут его прочитать).
Как создать URL-адрес с использованием обратного маршрутизации, который включает параметр backTo
?
Я бы ожидать что-то вроде:
routes.Users.view(id).withQueryString("backTo" -> Seq("previous"))
Но что не существует.
К сожалению, это требует от меня повторного анализа URL-адреса, поскольку я не могу (не должен?) Делать здесь предположение, что параметр «id» является параметром пути (деталь реализации) ... если маршрут изменилось, может закончиться неверный URL-адрес, например: «/ users? id = 24? backTo = home» –
@AlvaroCarrasco, если вы сохраните правильный порядок маршрутов ('GET/users ...' first 'GET/users /: id ... 'later) двойной знак вопроса не произойдет, так или иначе, используя действительный синтаксис маршрутизации IMHO по-прежнему намного безопаснее – biesior
@biesior Моя точка зрения заключается в том, что обратная маршрутизация должна изолировать меня от необходимости беспокоиться о фактической реализации маршрут. Изменение одного маршрута с использованием параметра «path param» для использования параметра «query param» не должно начинать производить недействительные URL-адреса –