Con las rutas Sinatra, ¿cómo puede haber un parámetro nombrado requerido y un parámetro nombrado opcional en la misma parte de la ruta?Parámetros necesarios y opcionales para la ruta Sinatra
parámetro de ruta opcional funciona bien aquí
get '/widgets.?:format?'
Pero, trata de combinar un parametro llamado requerida, y las cosas se rompen.
get '/widgets/:id.?:format?'
solicitudes de /widgets/abc.json pasan todo el abc.json como el parámetro id.
El Sinatra expresión regular compilada es: ""
/^\/widgets\/([^\/?#]+)(?:\.|%2E)?([^\/?#]+)?$/
Esto se debe a que la expresión regular para hacer coincidir ': id' es codiciosa, pero agregar'? 'Al resto hace que no estén codificadas. Abra [un problema] (https://github.com/sinatra/sinatra/issues/new), podría solucionarlo. –