Falcor 路由器是不是实施路由排名?

Posted

技术标签:

【中文标题】Falcor 路由器是不是实施路由排名?【英文标题】:Does Falcor Router implement route ranking?Falcor 路由器是否实施路由排名? 【发布时间】:2015-12-08 06:42:23 【问题描述】:

在研究 Faclor 路由器时,我非常喜欢 KeySets 的特性,它允许路由以任意组合匹配一组实体键,但这让我对路由排名感到疑惑。

如果我有路线:"titlesById[integers:titleIds]['name','year']"

还有一条路线:"titlesById[integers:titleIds]['name']"

当我只请求name 键时,Falcor 路由器如何确定使用哪个路由。我担心的是,当访问多个键而不是单个键时,您可能会有更有效的数据访问策略。

【问题讨论】:

【参考方案1】:

是和否。

实现路由优先,含义如下:

特定键:4 整数/范围:2 键:1

所以['name', 'year']['name'] 在优先级上是等价的。

但是你的规范有问题。路由器不允许 same 优先路由匹配相同的路径。因此,以下路径优先等效,因此会在Router构造时抛出错误。

 route: 'titlesById[integers:titleId].name', get: ... ,
 route: 'titlesById[ranges:titleId].name', get: ... , 
...

这将引发错误,因为范围和整数都匹配同一组传入数据(数字)并且它们都匹配相同的路由(titlesById、numbers、name)。这延伸到您的示例,您有两条路线匹配相同的路径,这不会发生(当然,除非一条路线与 get 处理程序匹配,而另一条路线与 set 处理程序匹配)。

【讨论】:

以上是关于Falcor 路由器是不是实施路由排名?的主要内容,如果未能解决你的问题,请参考以下文章

Falcor路由器设置方法

适当的 Falcor 架构会导致单片路由器吗?

Falcor 路由器 Observable

Falcor 路由器应该从外部 API 返回值

Falcor 路由器无法解析 $ref

为深度路径构建 falcor 路由器的有效方法?