Требуется помощь в определении универсального API веб-службы, который будет возвращать динамический / настраиваемый набор значений полей для заданной записи заданного «типа» из базы данных. Веб-сервис принадлежит поставщику, но мы можем контролировать определение / дизайн API. Цель состоит в том, чтобы определить этот API.
Справочная информация:
У нас есть БД, размещенная поставщиком SaaS. БД содержит различные («типовые») таблицы, например, «Заявитель», «Приложение», «Местоположение» и т. Д. Поставщик предоставил веб-сервис, который мы можем вызвать для получения данных. У нас есть новый набор требований, которые будут поддерживаться поставщиком, обновляющим API своего веб-сервиса.
Требования:
1. Средство для хранения и извлечения настраиваемого списка полей :
Нам нужно придумать способ хранения полей, которые должны быть извлечены из БД (для данной записи), на носителе конфигурации - этот носитель будет содержать список типов данных со связанными полями, которые нужно извлечь для каждого. Этот носитель определяет, что извлекается для данной записи из веб-службы.
Например. носитель конфигурации может содержать тип данных «Заявитель» со следующими полями: ID, FirstName, LastName. Это означает, что мы будем запрашивать эти 3 поля только при извлечении записи типа «заявитель». Эти настраиваемые данные могут быть изменены / отредактированы в любое время.
2. «Универсальный API веб-службы» для извлечения только указанных полей
Второе требование - создать общий API, который работает в тандеме с настраиваемым списком полей, приведенным выше. Мы хотим вызвать интерфейс веб-службы поставщика «общим способом», который принимает идентификатор записи, тип данных и динамический набор полей (согласно данным конфигурации). Под «общим» я подразумеваю, что веб-сервис поставщика должен знать только те поля, которые нужно получить во время выполнения. Это означает, что мы можем изменить источник конфигурации (поля или типы данных) по своему усмотрению без какого-либо влияния на API веб-службы.
Qs / Мысли включают в себя:
а) Конфигурационное хранилище:
С нашей стороны мы управляем конфигурацией в файле конфигурации, БД или веб-сервисе. Есть ли лучший, более общий способ сделать это? Имеет ли смысл веб-служба (которая публикует список полей для данного типа данных) в этом сценарии?
б) Создание веб-службы "универсальной":
- при «каждом» вызове веб-службы для извлечения данных для данной записи мы отправляем динамический набор полей для извлечения в качестве входного параметра --maybe в качестве объекта или списка и т. Д.
- вместо отправки списка при "каждом" вызове мы просто отправляем идентификатор записи и вводим ее в веб-службу, и веб-служба ищет поля, которые нужно извлечь из нашего веб-службы