做 SAP Fiori、SAPUI5 或企业集成接口时,很容易碰到一种看起来非常正常、实际上却很消耗性能的访问方式。页面需要展示销售订单以及对应的行项目,于是客户端先请求销售订单列表,再根据每一个销售订单编号继续请求行项目。订单数量少的时候几乎感觉不到区别,可一旦列表中出现几十甚至几百条订单,浏览器 Network 面板里就会迅速堆出大量 HTTP 请求。
这种场景正是 OData $expand 最有价值的地方。
OData 协议里的 $expand 用于把导航属性指向的关联实体直接放入当前响应。OASIS 的 OData 规范明确规定,客户端通过 $expand 指定需要内联返回的关联实体,服务端需要把这些关联内容包含在响应里。OData V4 还允许在 $expand 内继续使用 $select、$filter、$orderby、$top、$skip 以及嵌套 $expand 等查询选项。
在 SAP Gateway 的语境里,它并不只是一个让 JSON 层次更漂亮的语法糖。SAP 官方把 $expand 明确列入 OData 性能最佳实践,并指出,相比连续执行多个单独请求,合理使用 $expand 可以减少客户端与 SAP Gateway 之间的往返,也可以减少 SAP Gateway 与后端 SAP Business Suite 之间的往返,从而降低网络耗时、Gateway 响应时间以及资源消耗。如果数据
订阅专栏 解锁全文
400

被折叠的 条评论
为什么被折叠?



