Необходимо определить общий API веб-службы для обработки извлечения динамического набора полей из БД. - PullRequest
0 голосов
/ 24 июня 2011

Требуется помощь в определении универсального API веб-службы, который будет возвращать динамический / настраиваемый набор значений полей для заданной записи заданного «типа» из базы данных. Веб-сервис принадлежит поставщику, но мы можем контролировать определение / дизайн API. Цель состоит в том, чтобы определить этот API.

Справочная информация:

У нас есть БД, размещенная поставщиком SaaS. БД содержит различные («типовые») таблицы, например, «Заявитель», «Приложение», «Местоположение» и т. Д. Поставщик предоставил веб-сервис, который мы можем вызвать для получения данных. У нас есть новый набор требований, которые будут поддерживаться поставщиком, обновляющим API своего веб-сервиса.

Требования:

1. Средство для хранения и извлечения настраиваемого списка полей : Нам нужно придумать способ хранения полей, которые должны быть извлечены из БД (для данной записи), на носителе конфигурации - этот носитель будет содержать список типов данных со связанными полями, которые нужно извлечь для каждого. Этот носитель определяет, что извлекается для данной записи из веб-службы.

Например. носитель конфигурации может содержать тип данных «Заявитель» со следующими полями: ID, FirstName, LastName. Это означает, что мы будем запрашивать эти 3 поля только при извлечении записи типа «заявитель». Эти настраиваемые данные могут быть изменены / отредактированы в любое время.

2. «Универсальный API веб-службы» для извлечения только указанных полей Второе требование - создать общий API, который работает в тандеме с настраиваемым списком полей, приведенным выше. Мы хотим вызвать интерфейс веб-службы поставщика «общим способом», который принимает идентификатор записи, тип данных и динамический набор полей (согласно данным конфигурации). Под «общим» я подразумеваю, что веб-сервис поставщика должен знать только те поля, которые нужно получить во время выполнения. Это означает, что мы можем изменить источник конфигурации (поля или типы данных) по своему усмотрению без какого-либо влияния на API веб-службы.

Qs / Мысли включают в себя:

а) Конфигурационное хранилище: С нашей стороны мы управляем конфигурацией в файле конфигурации, БД или веб-сервисе. Есть ли лучший, более общий способ сделать это? Имеет ли смысл веб-служба (которая публикует список полей для данного типа данных) в этом сценарии?

б) Создание веб-службы "универсальной":

- при «каждом» вызове веб-службы для извлечения данных для данной записи мы отправляем динамический набор полей для извлечения в качестве входного параметра --maybe в качестве объекта или списка и т. Д.

- вместо отправки списка при "каждом" вызове мы просто отправляем идентификатор записи и вводим ее в веб-службу, и веб-служба ищет поля, которые нужно извлечь из нашего веб-службы

1 Ответ

0 голосов
/ 24 июня 2011

Самый простой способ - представить эту функциональность как своего рода веб-сервис RESTful.То есть, для заявителей вы бы /db/applicant/ вернули список всех заявителей (или идентификаторов заявителей), а если 123 является идентификатором заявителя, вы получите /db/applicant/123.Проще всего, вы получите объект JSON, такой как

{'first_name':'Joe', 'last_name':'Applicant', 'address':'123 Test Drive'}

. Кроме того, вы можете добавить параметр, который кодирует интересующие вас поля, например, /db/applicant/123?fields=first_name+last_name.

.Использование JSON (или XML, если вы чувствуете, что стоит дополнительная работа) имеет преимущество перед CSV или другими альтернативами в том, что набор возвращаемых вами полей расширяемый - т. Е. Если одному клиенту нужно поле shoe_size, ответ для другогоможно включить его, и все еще работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...