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