【发布时间】:2013-12-16 18:40:22
【问题描述】:
我正在为许多不同的客户构建网络服务,以连接到汽车零件数据库。该部件具有多种特性。不同的客户需要不同的属性子集来“做他们的事情”。
所有客户都至少需要一个 ID、一个部件号和一个名称。有些可能需要价格,有些可能需要图像的 URL,等等。下一个客户端可能会在几年后编写,并且需要不同的属性子集。我宁愿不要发送超过他们需要的东西。
我一直在为每个要求构建具有属性子集的单独“PartDTO”,并将它们作为单独的 Web 服务方法提供,以返回相同的部件列表,但每个部件具有不同的属性。与其为每个客户建立这个并为 DTO 和方法提出逻辑名称,我想要一种让客户指定他们想要什么的方法。我正在返回 JSON,所以我正在考虑客户端向我传递一个 JSON 对象,其中列出了他们在结果集中想要的属性:
ret = { ImageUrl: true, RetailPrice: true, ... }
首先,这有意义吗?
其次,我不想在这里失去的是返回 IEnumerable 并让 JSON 工具序列化它的好语法。我当然可以建立一个“JSON”字符串并返回它,但这看起来很笨拙。
建议? C#'动态'?
【问题讨论】:
-
我见过 API(Jira 就是其中之一),可以让您在输入中指定所需的字段。我认为 Jira 使用查询参数(扩展他们称之为)。使其成为逗号分隔的字段名称列表。 /v1/api/entity?fields=ImageUrl,RetailPrice 这样任何给定的客户都可以只请求所有字段的特定子集。
标签: c# json web-services