Давайте предположим, что у нас есть простой API, позволяющий клиентам получать список элементов определенного типа:бизнес-логики и успокоительной API дизайн
GET /items/foo
GET /items/bar
GET /items/blah
Ответ представляет собой список элементов запрашиваемого типа, каждая запись имеет уникальный идентификатор. Клиент обычно отображает эти элементы в таблице/сетке/и т. Д.
Теперь в клиенте мы должны реализовать функцию закрепления, так что другой API позволяет фиксировать/снимать элементы на основе их идентификатора & их типа. Поэтому я обсуждал с коллегами возможности информировать клиента о том, какие предметы закреплены или нет.
Опция должна была иметь другой API GET /pinning/{type}
, чтобы вернуть список всех закрепленных элементов указанного типа.
Другим решением было использовать аналогичный API GET /pinning/{type}
, чтобы вернуть список идентификаторов всех закрепленных элементов. Позвольте клиенту разобраться.
Первое решение было принято. Их аргумент заключался в том, что бэкэнд отвечает за бизнес-логику и что клиент не должен участвовать в бизнес-логике, поэтому клиент должен просто отображать данные, которые он получает с сервера. Этот аргумент не продал его для меня. Я думаю, что сервер должен в этом случае предоставить данные, которые позволяют клиенту выполнять дополнительную логику представления.
Какое решение лучше? Или какие другие решения возможны?
Да. Как правило, для этого потребуются дополнительные вызовы, но в случае наших данных пристыкованные элементы на первом месте, при получении элементов определенного типа. Я думал, что клиент делает начальную значительную выборку, поэтому шансы на отсутствие закрепленных предметов довольно малы. Наверное, я виноват в преждевременной оптимизации данных, доступных сейчас. Я вижу все больше и больше, почему второе решение не предпочтительнее. – anonymvs