Определите, какие поля в JSON были указаны - PullRequest
0 голосов
/ 19 января 2020

Я использую WebAPI для обновления некоторых объектов в базе данных (net core 3.0, mvc webapi, efcore, vs2019). У меня возникают проблемы с выяснением, какие свойства фактически были отправлены в запросе JSON моей конечной точке webapi, поэтому я не обновляю их в базе данных, если они не были отправлены (т.е. оставляю их как есть).

Вот мой код:

Модель:

public class UpdateModel
{
   public string FirstName { get; set; }
   public string LastName { get; set; }
   public string Address { get; set; }
}

Метод WebAPI:

[HttpPut("entity/{id}")]
public async Task<SomeResult> Update(int id, [FromBody]UpdateModel model)
{
   ...
}

Запрос полезной нагрузки (метод PUT, пример URL: https://myserver/api/entity/1 ):

{
  FirstName: "John"
}

В случае с вышеприведенным JSON только имя FirstName будет обновлено в БД.

Если, например, было отправлено это JSON:

{
  FirstName: "John",
  Address: null
}

Это будет означать, что (помимо обновления FirstName) Address также будет обновлен до нуля (чего не будет в первом случае).

На самом деле существуют не только строковые объекты в модели они просто используются здесь в качестве примера.

Мой API вызывается и все (конечно, с LastName и Address равными NULL), я просто хочу знать, какие поля действительно были отправлены в запросе JSON. Должен ли я проверять каждое поле на значение NULL или есть какой-либо другой метод проверки (более обобщенный c)?

Может быть, есть какой-то другой подход к такого рода проблеме, и я просто не знаком с ним

...