我们目前正在设计将由移动应用程序使用的符合 OData 的实体数据模型。团队分为两个;提供 OData 服务的后端开发人员和使用这些服务的前端开发人员。
前端和后端开发人员之间的分歧之一是关于我们主要实体的设计。从前端的角度来看,它应该是这样的:
Order:
Order ID
Order Type
Assigned To
Customer ID
Price
Currency
etc...
将使用以下 URL 查询 Order 对象:
http://SERVICE_ROOT_URL/Orders?$filter=Order_Type eq 'Inquiry' or Order_Type eq 'Quotation'
http://SERVICE_ROOT_URL/Orders?$filter=Order_Type eq 'Inquiry' and Assigned_To eq 'James7'
后端开发人员愿意为 Order 实体添加一个新字段,并使用该字段来了解用户正在查询的内容。让我们将这个新字段命名为Request Code
。使用请求代码字段,查询将如下所示:
http://SERVICE_ROOT_URL/Orders?$filter=Request_Code eq '0022' // The orders requiring approval and the current user can approve them
http://SERVICE_ROOT_URL/Orders?$filter=Request_Code eq '0027' // The orders with the open status
基本上,Request Code
它不是实体的实际部分,而是人造的。它只是增加了一些智能,以便后端的查询变得更容易。这样,后端将仅支持具有此请求代码的那些查询。也计划在更新场景中使用,在更新实体时Request Code
,前端预计会通过。这样,后端将通过查看请求代码来知道要更新哪些字段。Request Code
Order
我在前端,我认为不Request Code
应该包含在模型中。它使设计加密并消除了 OData 服务的简单性。除了让后端的事情变得更容易之外,我也没有看到任何附加价值。
这是 OData 服务设计中的常见做法吗?