Мне нужна некоторая обратная связь по моей текущей архитектуре.Ресурс REST со свойством List
У меня есть ресурс «Человек», доступный через запросы GET и PUT:/users/people/{key}. Ресурс создает и принимает объекты «Person» в формате JSON.
Это пример JSON, что GET /users/people/{key}
может вернуться:
{
"age":29,
"firstName":"Chiquita",
"phoneNumbers":[
{"key":"49fnfnsa0sas","number":"555-555-5555","deleted":false}
{"key":"838943bdfb-f","number":"777-777-7777","deleted":false}
]
}
Как вы можете видеть, «Человек» имеет некоторые типичные поля, такие как «FirstName» и «возраст», а также хитроумном коллекции -тип: "phoneNumbers".
Я пытаюсь разработать ресурсы, чтобы при их обновлении клиенту нужно было отправить обратно поля, которые необходимо обновить. Например, чтобы обновить только ПгвЬЫате персоны:
PUT users/people/{key}
{
"firstName":"New first name",
}
Таким образом, есть много меньше ненужная информация передается туда и обратно (в градусах величины меньше в зависимости от размера ресурса)
Моего вопрос в том, что мне делать со свойствами списка, такими как «phoneNumbers». Должен ли я писать более сложный код, который проверяет существующие ключи PhoneNumber в старом списке и не трогает их, если они не указаны, обновляет их, если есть соответствующий ключ, и добавляет их, если есть номер телефона с новым ключом ? Или я должен написать более простой код, который рассматривает каждое свойство списка «phoneNumbers» как просто другое поле, которое полностью перезаписывается, если оно включено в тело запроса «PUT»? Существует ли стандартный подход к этому, когда одна стратегия оказалась менее проблематичной, чем другая? или я должен использовать свое усмотрение?
Спасибо!
Чтобы уточнить, это для страницы «Изменить контакт» или аналогичный, где, для данного объекта существуют синглеты (возраст, firstName и т. д.) и коллекции (номер телефона)? –
Эй, Джо, это звучит правильно. –