ASP.NET 或 Nancy 等框架提供了可用于指定路由的语法,例如:
MapRoute("/customers/{id}/invoices/{invoiceId}", ...)
在 ASP.NET 中,路由有两个方向。他们能match请求 URI,例如/customers/32/invoices/19
到一条路线,他们可以resolve参数如{ id: 37, invoiceId: 19 }
到 URI 中。
RFC 6570:URI 模板 https://www.rfc-editor.org/rfc/rfc6570还为 URI 定义了一个类似但更丰富的规范,通常用于resolveURI 的。例如:
UriTemplate("/customers/{id}/invoices{/invoiceId}{?sort}", { id: 37, invoiceId: 19, sort: 'asc' } )
// returns: /customers/37/invoices/19?sort=asc
我的问题是,RFC 6570 中指定的语法可以用于match请求路由的 URI?语法中是否有一部分会使给定 URI 与给定 URI 模板的匹配变得不明确?是否有任何库支持将 URI 与 URI 模板匹配?
我怀疑这会非常困难。当然,诸如前缀语法之类的东西将导致无法重新生成原始参数。
对于路径段扩展之类的事情
{/list*} /red/green/blue
您如何知道路径的哪些部分是文字以及哪些部分是参数的一部分? URITemplate 规范中有很多相当奇怪的行为,我怀疑即使可以匹配,它也会相当昂贵。
您有兴趣出于路由目的这样做吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)