URI模板可以用于匹配URI到路由吗?

Pau*_*ell 10 asp.net asp.net-mvc routing uritemplate

像ASP.NET或Nancy这样的框架提供了可用于指定路由的语法,例如:

MapRoute("/customers/{id}/invoices/{invoiceId}", ...)
Run Code Online (Sandbox Code Playgroud)

在ASP.NET中,路由工作在两个方向.它们可以匹配请求URI(例如 /customers/32/invoices/19路由),并且可以将参数解析{ id: 37, invoiceId: 19 }URI.

RFC 6570:URI模板还定义了一个类似的,虽然更丰富的URI规范,通常用于解析 URI.例如:

UriTemplate("/customers/{id}/invoices{/invoiceId}{?sort}", { id: 37, invoiceId: 19, sort: 'asc' } )
// returns:  /customers/37/invoices/19?sort=asc
Run Code Online (Sandbox Code Playgroud)

我的问题是,RFC 6570中指定的语法是否可用于将请求URI与路由匹配?是否有一部分语法会使给定的URI与给定的URI模板匹配变得模糊不清?是否有任何库支持将URI与URI模板匹配?

Dar*_*ler 1

我怀疑这会非常困难。当然,诸如前缀语法之类的东西将导致无法重新生成原始参数。

对于路径段扩展之类的事情

 {/list*}           /red/green/blue
Run Code Online (Sandbox Code Playgroud)

您如何知道路径的哪些部分是文字以及哪些部分是参数的一部分?URITemplate 规范中有很多相当奇怪的行为,我怀疑即使可以匹配,它也会相当昂贵。

您有兴趣出于路由目的这样做吗?