- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个传统的 REST API,它返回如下数据:
GET/users.json
users: [
{id: 0, name: "John Smith"},
...
]
GET/users/0.json
user: {
id: 0,
name: "John Smith"
}
如您所见,如果您首先从列表 (/users.json
) 中请求数据,然后单击某个用户,即使该信息存在于第一个列表中,它也会由用户通过id请求重新请求。
在 Falcor 中,可以通过在第一次调用中提供引用列表来解决这个问题。
我的问题是,如果我正在编写一个 Falcor 路由器来充当中间人,我该如何优化这样的场景?目前,路由器必须请求完整的用户列表,然后丢弃信息并根据 ids 返回一个引用列表给客户端。这仍然可以节省客户端的带宽,但在 Falcor 路由器及其数据源(REST API)之间并不是最优的。
最佳答案
可以解决这种情况,但首先,我想解释一下为什么您会看到这种不匹配的情况。这是因为 Falcor 尊重 REST 原则,但您的 API 不尊重。 REST 规定来自 API 的数据应该是可缓存的。如果它同时驻留在两个位置,则它无法被缓存。例如,如果我要 PUT
或 PATCH
/users/0.json
,客户端如何知道此操作对/users.json
(不同的资源)并使其缓存无效?这不可以。在完全兼容的 HTTP REST API 和 Falcor API 中,数据仅驻留在一个位置,然后可以通过引用链接到该位置。对于 HTTP,refs 是 URL,因此对 /users.json
的 GET
调用应使用 URL 列表进行响应,例如 ["/users/0.json “,“/users/1.json”]
。
也就是说,这并不意味着您运气不好。
您可能希望在 Falcor 方面拥有这样的路由:users[{integers:indices}][{keys:props}]
。在此路由的处理程序中,您可以查询pathSet.indices并查看实际请求了多少索引。如果只有一个(或几个),则将请求转发到 /users/${indices[i]}.json
,否则转发到 /users.json
。
关于javascript - 优化传统 REST API 数据源和 Falcor 客户端之间的 node.js falcor 路由器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40158305/
如果我在 netflix/falcor 上使用自述文件中的示例,则可以使用: return {path:['greeting'], value: 'Hello World'}; 但是,如果我尝试将值更
我正在尝试使用 Falcor 来处理 Guild Wars 2 API并想用它来显示游戏元素的详细信息。我对构建一个可以使用多个数据源来组合不同 API 的结果的路由器特别感兴趣。 问题是,Item
Falcor 的call 方法是否有详细的解释或使用示例? 我很难理解 Falcor 的 call 方法。我理解第一个参数(functionPath 和 args),但我对最后两个参数是什么以及它们的
我有一个传统的 REST API,它返回如下数据: 用户列表 - GET/users.json users: [ {id: 0, name: "John Smith"}, ... ]
假设我们有以下由松散耦合的微服务组成的叫车应用程序: 该示例取自 https://www.nginx.com/blog/introduction-to-microservices/ 每个服务都有自己的
假设服务器上运行以下 Router 类: var PetsRouterBase = Router.createClass([{ route: 'petList[{integers:indices}
在 JavaScript 中,strings are immutable ,引用字符串相当于复制字符串 istelf。 在 Falcor 中,我可以使用 {$type:"ref", value:[..
我正在玩 Falcor,看看我工作的公司是否可以使用它,所以我还是个新手。 我使用模型作为数据源。 这是我的模型: var model = new falcor.Model({ cache:{
我正在试验 falcore(go(lang) 框架),他们有一个很好的示例,允许您向进程发送 SIGHUP,之后它会重新启动客户端,移动连接并退出父进程。 因此,在我的示例中,我有一个 server.
我是 Falcor 数据获取框架的新手。当我请求类似的东西时,我尝试了几个例子 model.get(["contacts", {0..2}, "name"]) .then(response
GraphQL consists of a type system, query language and execution semantics, static validation, and ty
我最近开始研究 Netflix 的 falcor 库,并尝试根据我们的数据进行概念验证。 我一直对这个库感兴趣,尽管有大量在节点服务器上配置和使用路由的示例,但在 java 服务器上执行相同操作的信息
请告诉我好吗?什么是Falcor ?它是类似于 React.js 的 Flux 或 Reflux 吗?Falcor - 这是模型吗?如果我使用 Falcor,我不应该使用 Flux 或 Reflux?
在实现 Falcor 数据源时,我很困惑为什么有时您可能会返回路径值的集合: [{path, value}, {path, value}] 有时您必须以 jsonGraph 信封的形式提供返回值: {
我阅读了有关 immutable.js 的内容,以及它可以通过实现 shouldComponentUpdate() 检查 props 或状态是否已更改,从而在您的 React 应用程序中为您带来的性能
当使用setValue()时在本地Falcor模型,它按预期工作,但是当模型移动到服务器时,出现“500(内部服务器错误)”。 下面的示例工作正常(脚本在浏览器中运行) var $ref = falc
我设置了一些 Netflix OSS 微服务(Eureka、Falcor sidecar)以及非常基本的 Falcor 设置来测试功能。我正在尝试从 Falcor 客户端调用外部 API,其端点为 h
我是一名优秀的程序员,十分优秀!