2014-01-25 6 views
0

Скажем, у меня есть реляционная база данных со 100 + таблицами. Каждая таблица моделирует своего рода сущность (лицо, адрес, автомобиль, собака и т. Д. И т. Д.). Скажем, у меня также есть успокоительный API и группа людей, которые хотят получать данные POST в эту базу данных. Много раз эти данные поступают в виде XML-пакета или данных POST из веб-формы или чего-то подобного. Иногда нам нужно публиковать все таблицы базы данных, иногда большинство, иногда некоторые, иногда одни.Восстановительные ресурсы и реляционные базы данных несовместимы

Теперь требуют наших клиентов размещать сгустки нескольких данных ресурсов в 100+ таблицы настойчивость через успокоительного путь

POST /person 
POST /email 
POST /vehicle 
POST /insurance 

безумен! Таким образом, мы могли бы иметь ресурс вместо того, чтобы это

POST /auto-record 
{ post body of key values for all the tables needed to make an 'auto-record' } 

и он будет связан с какой-то бизнес-логики, которая знает, чтобы сделать вставки в многочисленных таблицах базы данных, необходимой. Отлично. Но теперь, когда я думаю об этом, этот проект придерживается принципа «открытый/закрытый»? Если нам когда-либо понадобилось обновлять/добавлять/удалять, что означает «автозапись», то мы забиваем наших клиентов.

Как можно успокоить сделку api с группировками ресурсов? Или это просто не так? Есть ли альтернативы?

+0

С этим вопросом вы сталкиваетесь с основанной на мнениях территорией. Кто сказал, что все программы должны следовать всем принципам SOLID? Часто во имя других выигрышей вы отказываетесь от некоторых принципов, за которыми вы обычно следуете. –

+0

Мне не известно о нарушении RESTful шаблона в вашем подходе. Возможно, вам следует подумать о переименовании имени вашего ресурса, поскольку 'auto-record' является слишком абстрактным. Предоставление ресурса, который получает, POST, UPDATE или DELETEs более сложную сущность (Человек со списком своих питомцев, адреса и т. Д.), Не должен быть проблемой. См. Мой ответ ниже. P.S .: Принципы REST не являются доктриной, это правильное использование протокола HTTP для работы с ресурсами. – klimpond

ответ

0

Вы можете реализовать больше версий вашего ресурса API RESTful /auto-record. На данный момент измените свой URI ресурса на /v1/auto-record. Когда будет запрос на изменение функции, вы просто предоставите своим клиентам новый ресурс /v2/auto-record. Старая функциональность будет сохранена в /v1/auto-record, а новые пользователи получат необходимую функциональность по адресу v2/auto-record.

Смежные вопросы