Falcor Router 是否实现路由排名?
Does Falcor Router implement route ranking?
在研究 Faclor 路由器时,我非常喜欢 KeySets 的特性,它允许路由以任意组合匹配一组实体键,但这让我想知道路由排名。
如果我有路线:"titlesById[{integers:titleIds}]['name','year']"
和另一条路线:"titlesById[{integers:titleIds}]['name']"
当我只请求name
键时,Falcor 路由器如何确定使用哪条路由。我担心的是,当访问多个键而不是单个键时,您可能有更有效的数据访问策略。
是也不是
它实现了路由优先级,含义如下:
特定按键:4
整数/范围:2
键:1
所以['name', 'year']
和['name']
的优先级是等价的。
但是你的规格有问题。 Router 不允许 same 优先路由匹配相同的路径。因此以下路径优先 等价 ,因此会在 Router 构造时抛出错误。
{ route: 'titlesById[{integers:titleId}].name', get: ... },
{ route: 'titlesById[{ranges:titleId}].name', get: ... },
...
这将引发错误,因为范围和整数都匹配同一组传入数据(数字)并且它们都匹配相同的路由(titlesById、数字、名称)。这扩展到您的示例,您有两条路线匹配相同的路径,这不会发生(当然除非一条路线与 get
处理程序匹配,而另一条路线与 set
处理程序匹配)。
在研究 Faclor 路由器时,我非常喜欢 KeySets 的特性,它允许路由以任意组合匹配一组实体键,但这让我想知道路由排名。
如果我有路线:"titlesById[{integers:titleIds}]['name','year']"
和另一条路线:"titlesById[{integers:titleIds}]['name']"
当我只请求name
键时,Falcor 路由器如何确定使用哪条路由。我担心的是,当访问多个键而不是单个键时,您可能有更有效的数据访问策略。
是也不是
它实现了路由优先级,含义如下:
特定按键:4 整数/范围:2 键:1
所以['name', 'year']
和['name']
的优先级是等价的。
但是你的规格有问题。 Router 不允许 same 优先路由匹配相同的路径。因此以下路径优先 等价 ,因此会在 Router 构造时抛出错误。
{ route: 'titlesById[{integers:titleId}].name', get: ... },
{ route: 'titlesById[{ranges:titleId}].name', get: ... },
...
这将引发错误,因为范围和整数都匹配同一组传入数据(数字)并且它们都匹配相同的路由(titlesById、数字、名称)。这扩展到您的示例,您有两条路线匹配相同的路径,这不会发生(当然除非一条路线与 get
处理程序匹配,而另一条路线与 set
处理程序匹配)。