Я создаю веб-сервисы для разных клиентов для подключения к базе данных автомобильных деталей. Эти части имеют широкий спектр свойств. Различные клиенты будут нуждаться в разных поднаборах свойств, чтобы «делать свою работу».Стратегии для «Гибкого Webservice»
Все клиенты должны иметь хотя бы ID, номер детали и имя. Некоторым могут потребоваться цены, некоторые могут нуждаться в URL-адресах для изображений и т. Д. И т. Д. Следующий клиент может быть написан через несколько лет и требует еще одного подмножества свойств. Я бы предпочел не отправлять больше, чем нужно.
Я создавал отдельный «PartDTO's» с подмножествами свойств для каждого из этих требований и обслуживал их как отдельные методы webservice, чтобы возвращать один и тот же список частей, но с разными свойствами для каждого из них. Вместо того, чтобы создавать это для каждого клиента и придумывать логические имена для DTO и методов, я хотел бы, чтобы клиент указал, что они хотят. Я возвращаюсь JSON, так что я думал о клиенте передавая мне объект JSON список свойств, которые они хотят в итоге-набор:
в отставке = {ImageUrl: истинное, RetailPrice: правда, ...}
Прежде всего, это имеет смысл?
Во-вторых, то, что я не хочу потерять, - это хороший синтаксис для возврата IEnumerable < DTO> и пусть инструменты JSON сериализуют его. Я мог бы, конечно, создать строку «JSON» и вернуть ее, но это кажется довольно kludgey.
Предложения? C# 'dynamic'?
Я видел API (Jira один), который позволяет вам указать поля, которые вы хотите ввести. Я думаю, что Jira использует параметр запроса (разворачивайте, как они его называют). Создайте список имен полей, разделенный запятыми./v1/api/entity? fields = ImageUrl, RetailPrice Таким образом, любой клиент может просто запросить их конкретное подмножество всех полей. – aet