Задать вопрос
@shushara4241

Как отличить отстутсвие поля в теле запроса от заданного значением null?

Реализую REST API с помощью Spring и возникла проблема с методом PATCH для частичного обновления сущности. Метод подразумевает, что клиент отправит только те поля, которые нужно модифицировать. Есть nullable поля сущности. Сам вопрос: как определить задал ли клиет поле как null или не передал вообще? В обоих случаях при маппинге в объект через @RequestBody поле принимает значение null
  • Вопрос задан
  • 26 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
xez
@xez
TL Junior Roo
Вообще-то никак.
Есть, к счастью, куча способов решить этот вопрос.
0. Не использовать странный метод PATCH. Просто обновлять всю модель целиком методом POST
1. Если по какой-то причинне хочется "частичное обновление" сделать - можно сделать, например, какой-то флаг, который бы указывал, будут ли обновляться нулабельные поля. Можно подумать так же об отдельном методе.
2. Для метода PATCH разработать новую модель, которая будет указывать на поля и их новые значение. Типа мапы.
Т.е. для record User(String name, String phoneNumber){}
Принимать что-то типа такого джейсона:
{
   toUpdate : {
      "name" : "newName"
   },
   toDelete:  {
     phoneNumber
   }
 }


Похоже, что этот вопрос возник из-за желания использовать доменную модель во внешней интеграции, что является ошибкой проектирования. Как только вы откажетесь от такого подхода и будете использовать для внешних интеграций отдельные, специализированные модельки - все встанет на свои места.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы