Sto sviluppando una nuova applicazione e sto cercando di creare una convenzione per definire i percorsi. Idealmente, mi piacerebbe che fosse semplice, flessibile e reversibile.
Ecco alcuni esempi di framework popolari:
Backbone
route matches
-----------------------------------------------------
help help
search/:query search/kiwis
search/:query/p:page search/kiwis/p7
file/*path file/nested/folder/file.txt
docs/:section(/:subsection) docs/faq, docs/faq/installing
Django
Utilizza regex, ma viene fornito con un inversione regex
route matches
-------------------------------------------------------------------------------------
^articles/2003/$ /articles/2003/
^articles/(\d{4})/(\d{2})/$ /articles/2005/03/
^articles/(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/$ /articles/2003/03/03/
Ruby on Rails
:controller/:action/:id/with_user/:user_id
books/*section/:title
ASP.NET / MVC 5
{controller}/{action}/{id} /Products/show/beverages
{resource}.axd/{*pathInfo} /WebResource.axd?d=...
{productId:int}/{productTitle} /5/asp-net-mvc
books/{isbn?} /books, /books/1430210079
Django è probabilmente il più flessibile, ed è già familiare alle persone che conoscono le regex, ma è anche il più difficile da leggere e invertire.
Backbone, RoR e ASP.NET consentono tutte le parti opzionali e jolly / splat, con varie sintassi. MVC 5 ha alcune opzioni per limitare i parametri inline ala :int
.
Dove potrebbero questi schemi fallire e come potrebbero essere risolti?