Например, допустим, у меня есть конечная точка для получения списка зданий, которые могут быть либо квартирами, либо домами. Клиент может фильтровать по квартирам или домам. У квартиры есть свойство floor
, которого нет у дома, поэтому floor
будет равно null для всех домов. Для ответа со списком домов у нас будет следующее
{
[
{
"address": "1, foo street",
"size": 400,
"floor": null
},
{
"address": "2, bar street",
"size": 500,
"floor": null
},
}
Мы также можем иметь квартиры и дома в одном ответе, но пол всегда будет нулевым для домов.
Могу ли я удалить поле floor для домов или это плохая практика?
По моему опыту, совершенно нормально возвращать разные типы зданий, если клиент согласен с этим "контрактом" и может обрабатывать их так, как они есть.
Обычно наличие явного поля типа, указывающего, какое здание является текущим, помогает потребителю идентифицировать объект и обработать его соответствующим образом. Это предпочтительнее, чем что-то не столь явное, как "когда поле x равно null, это означает y".