Я создаю службу игрушки Пьедестала предназначенную иметь следующие ресурсы:Как настроить маршруты пьедестала для сестер, чтобы все были доступны при использовании: ограничений?
/
/movies
/movies/today
/movies/:iso-date
где:iso-date
матчи #### - ####
Ограничение для последнего маршрута определяется следующим фрагментом:
^:constraints {:iso-date #"\d{4}-\d{2}-\d{2}"}
Всякий раз, когда маршрут, содержащий это ограничение присутствует в таблице маршрутов я не могу получить свой родственный маршрут /movies/today
; вместо этого вместо этого получаю ответ «Не найден». Однако при удалении маршрута, связанного с ограничением, GET /movies/today
преуспевает.
постамента маршруты я определил, используя лаконичный внешний вид формата, как так:
(defroutes routes
[[["/" {:get root-page}
["/movies" ^:interceptors [fetch-movies]
{:get movies-page}
["/today" {:get movies-for-today-page}]
["/:iso-date" ^:constraints {:iso-date #"\d{4}-\d{2}-\d{2}"}
{:get movies-for-date-page}]]]]])
Построил я эту таблицу маршрутов правильно для достижения поведения маршрутизации, что я хочу?
NB: Печать скомпилированные маршрутов дает мне результат, я бы ожидать, что все маршруты присутствуют генерируемый :path-re
регулярные выражения матч, как ожидается, в REPL:
({:path-parts [""],
:path-params [],
:interceptors
[{:name :foobar.service/root-page,
:enter
#object[io.pedestal.interceptor.helpers$before$fn__7359 0x14501070 "[email protected]"],
:leave nil,
:error nil}],
:path "/",
:method :get,
:path-re #"/\Q\E",
:route-name :foobar.service/root-page}
{:path-parts ["" "movies"],
:path-params [],
:interceptors
[{:name :foobar.service/fetch-movies,
:enter
#object[io.pedestal.interceptor.helpers$on_request$fn__7401 0x2aa85cc4 "[email protected]"],
:leave nil,
:error nil}
{:name :foobar.service/movies-page,
:enter
#object[io.pedestal.interceptor.helpers$before$fn__7359 0x30ffc3c0 "[email protected]"],
:leave nil,
:error nil}],
:path "/movies",
:method :get,
:path-re #"/\Qmovies\E",
:route-name :foobar.service/movies-page}
{:path-parts ["" "movies" "today"],
:path-params [],
:interceptors
[{:name :foobar.service/fetch-movies,
:enter
#object[io.pedestal.interceptor.helpers$on_request$fn__7401 0x2aa85cc4 "[email protected]"],
:leave nil,
:error nil}
{:name :foobar.service/movies-for-today-page,
:enter
#object[io.pedestal.interceptor.helpers$before$fn__7359 0x3726fc3b "[email protected]"],
:leave nil,
:error nil}],
:path "/movies/today",
:method :get,
:path-re #"/\Qmovies\E/\Qtoday\E",
:route-name :foobar.service/movies-for-today-page}
{:path-parts ["" "movies" :iso-date],
:path-params [:iso-date],
:interceptors
[{:name :foobar.service/fetch-movies,
:enter
#object[io.pedestal.interceptor.helpers$on_request$fn__7401 0x2aa85cc4 "[email protected]"],
:leave nil,
:error nil}
{:name :foobar.service/movies-for-date-page,
:enter
#object[io.pedestal.interceptor.helpers$before$fn__7359 0x93fb20b "[email protected]"],
:leave nil,
:error nil}],
:path "/movies/:iso-date",
:path-constraints {:iso-date "(\\d{4}-\\d{2}-\\d{2})"},
:query-constraints {},
:method :get,
:path-re #"/\Qmovies\E/(\d{4}-\d{2}-\d{2})",
:route-name :foobar.service/movies-for-date-page})