Using URI Templates aka RFC 6570 for routing in Nancy.
You can use URI Templates to define routes in Nancy.
public class PeopleModule : Nancy.Routing.UriTemplates.UriTemplateModule
{
public PeopleModule()
{
// by default you'll be creating typical routes
Get("person/{id}", p => GetModel(p.id));
// and URI Templates are opt-in
using(Templates)
{
Get("people{;include}{/page}{?name}", p => GetPeople(p.include, p.page, p.name));
}
}
}
The second route will for example match a request to people;include=hobbies,friends/4?name=Tomasz
As you can see, URI Templates give more expressive syntax:
- variables can be extracted not only from segments but also other URI parts including query strings (
{?name}
) and path parameters ({;include}
) - all variables can have multiple values
Finally, URI Templates can also be used outside routing to mint identifiers. For example to used them as links in a REST API.
See some discussion here: http://t-code.pl/blog/2016/11/Towards-server-side-routing-with-URI-Templates/
The icon desiged by Gabriele Debolini from The Noun Project