У нас есть сайты электронной коммерции для мобильных телефонов. Мы создаем спокойные api для POST, PUT, DELETE, UPDATE мобильных телефонов.REST API Design: как разбить объект API, чтобы сделать более масштабируемый и надежный API
Каждый мобильный телефон будет иметь следующие основные функции: - цена, производитель, год выпуска, цвет, скидка.
Наряду с этим, большинство мобильных телефонов тоже будут иметь изображения.
Кроме того, некоторые из них имеют гарантию производителя. Скажем, 50% из них.
И у немногих мобильных телефонов будут доступные варианты финансирования, например, у нас есть определенные банки, чтобы облегчить им кредит. Почти 80% будут иметь этот объект.
Мы решали два подхода для разработки API для этого:
подход 1. Все из них в тот же объект JSON. Только один API:
{
"basicInfo": {
"price": "",
"mfgYear": "",
"manufacturer": ""
...
},
"images":{...},
"warranty":{...},
"finance":{...}
}
Подход 2. У всех этих объектов JSON отдельно. Например:
First Api for "basicInfo".
Second Api for "images".
Third Api for "warranty".
Fourth Api for "finance"
я мог понять некоторые плюсы и минусы каждого из них:
APPROACH1: Плюсы: Мы получаем всю информацию о наличии вместе на сервере. Это означает, что меньше обращений API, меньше нагрузки на сервер. Кроме того, в будущем, если мы реализуем некоторую обработку очереди для сохранения этой информации о запасах в базу данных, не было бы случая, когда изображение/гарантия/финансирование публикуются до того, как фон будет вставлен в базу данных, так как мы все вместе сообщаем здесь. Поэтому мы сначала вставим данные в базу данных, а затем добавим запись в другие таблицы, которые будут иметь отношения с внешним ключом. Против: Этот API/ресурс имеет множество обязанностей. Он станет все больше и больше, и в будущем в этом API может быть слишком много полей. Также это похоже на нарушение принципа Single Responsibility для меня.
ПОДХОД 2: Плюсы: Это выглядит немного чище и организовано. Похоже, что каждый API имеет свою собственную ответственность. Выглядит масштабируемо для меня. Если изменения производятся в одном API, это менее вероятно повлияет на другие API. Против: Больше количества обращений API на сервере. Выделяются больше шансов на то, что зависимые ресурсы акций будут размещены перед запасом. Например, мы можем деактивировать изображения перед вставкой.
Подход3. Предоставление обоих вариантов. Пример, позволяющий отправлять другую информацию с базовой информацией, а также создавать отдельные API для этих ресурсов.
Каков наилучший подход, то есть более спокойный, масштабируемый и улучшенный показатель производительности?
Что относительно сообщения. Я думаю, вы ответили за него. Сообщение должно быть отдельно или мы должны дать только один Api? – maverick
@sahil Действительно ли вы хотите, чтобы клиенты обновляли гарантию 'POST'ing на'/phones'? Для меня это кажется плохой идеей.Я бы предположил, что на нескольких телефонах будет предоставлена гарантия. Аналогично, информация о финансировании потенциально может быть одинаковой для нескольких дискретных телефонов, если, скажем, поставщик и линейка продуктов одинаковы. Требовать, чтобы клиенты обновляли эти вещи, чтобы делать их отдельно. –
каждый телефон будет иметь различную сумму EMI, срок пребывания и будет иметь имя банка, предлагающее эту услугу, и несколько других полей. Теперь, следует ли нам составлять информацию о финансировании из телефонной почты api или хранить ее как отдельный ресурс? – maverick