W przypadku tras Sinatra, w jaki sposób może istnieć zarówno wymagany nazwany parametr, jak i opcjonalnie nazwany parametr w tej samej części trasy.Parametry wymagane i opcjonalne dla trasy Sinatra
Opcjonalny parametr trasa działa dobrze tutaj
get '/widgets.?:format?'
Ale spróbuj połączyć wymagane nazwie paramter, a rzeczy złamać.
get '/widgets/:id.?:format?'
Żądania dotyczące /widgets/abc.json przekazują cały abc.json jako parametr id.
Sinatry skompilowany regex to: „”.
/^\/widgets\/([^\/?#]+)(?:\.|%2E)?([^\/?#]+)?$/
Dzieje się tak dlatego, że wyrażenie regularne dla dopasowania ': id' jest chciwe, ale dodanie"? "Do reszty powoduje, że są nieuporządkowane. Proszę otworzyć [problem] (https://github.com/sinatra/sinatra/issues/new), być może będę w stanie to naprawić. –