簡體   English   中英

優化傳統REST API數據源和Falcor客戶端之間的node.js falcor路由器

[英]Optimising a node.js falcor router between a traditional REST API data source and a Falcor client

我有一個傳統的REST API,它返回如下數據:

用戶列表 - GET /users.json

users: [
    {id: 0, name: "John Smith"},
    ...
]

用戶ID: GET /users/0.json

user: {
    id: 0,
    name: "John Smith"
}

如您所見,如果您首先從列表中請求數據( /users.json ),然后單擊某個用戶,即使該信息存在於第一個列表中,也會通過id請求從用戶重新請求該信息。 。

在Falcor中,這將通過在第一次調用中具有引用列表來解決。

我的問題是,如果我正在編寫Falcor路由器作為中間人,我該如何優化這種情況? 目前,路由器必須請求完整的用戶列表,然后丟棄信息並將基於ID的引用列表返回給客戶端。 這仍然節省了客戶端的帶寬,但在Falcor路由器及其數據源(REST API)之間並不是最理想的。

可以解決這種情況,但首先,我想解釋為什么你看到這種不匹配。 這是因為Falcor尊重REST原則,但您的API卻沒有。 REST聲明來自API的數據應該是可緩存的。 如果它一次駐留在兩個地方,則無法緩存。 例如,如果我是PUTPATCH /users/0.json ,客戶端如何知道此操作對/users.json (一個不同的資源)有影響並使其緩存無效? 這不可以。 在完全兼容的HTTP REST API和Falcor API中,數據只駐留在一個地方,然后它可以鏈接到via refs。 對於HTTP,refs是URL,因此對/users.jsonGET調用應該響應一個URL列表,如["/users/0.json", "/users/1.json"]

也就是說,這並不意味着你運氣不好。

在Falcor方面你可能想要的是擁有這樣的路線: users[{integers:indices}][{keys:props}] 在此路由的處理程序中,您可以查詢pathSet.indices並查看實際請求了多少索引。 如果只有一個(或幾個),請將請求轉發給/users/${indices[i]}.json ,否則將其轉發給/users.json

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM