.NET Core REST API определяет поле ввода / вывода из запроса - PullRequest
0 голосов
/ 22 октября 2018

У меня есть конечная точка для создания / обновления объекта данных, который имеет 5 полей в своей таблице.

Существует 5 полей для создания:

class A
{
    string field1
    string field2
    int field3
    int field4
    bool field5
}

Когда запрашивающая сторона вызывает мою конечную точку, я хочу определить, какие поля размещены в теле запроса.Потому что я буду использовать эти опубликованные поля для моего обновления.Я не хочу использовать другие поля.

Например: Requester создал данные с использованием 5 полей.Через некоторое время requster опубликовал 3 поля, которые хотел обновить.Он не хочет обновлять другие 2 поля.Поэтому мне нужно определить, какие поля отправлены в конечную точку, и обновить только эти 3 поля.

1 Ответ

0 голосов
/ 22 октября 2018

Когда клиент не включает одно или несколько полей из вашей модели, это называется «занижение».В этом случае, если вы не отметили отсутствующие поля как обязательные (используя атрибут), для них будет установлено значение по умолчанию.

Таким образом, при условии, что вы можете установить «волшебное» значение по умолчанию для каждогополе (значение, которое не приходит от клиента), вы можете определить, какие из них были отправлены клиентом, а какие нет, и соответствующим образом изменить свою логику.Например:

class A {
  string field1 = "nosave";
  string field2 = "nosave";
  int field3 = -1;
  int field4 = -1;
  bool field5;
}

public IActionResult foo(A request) {
   if(request.A != "nosave") { saveField(request.A); }
   ...
}

Сложной частью будут поля типа Booleans, где никакие возможные значения не могут быть проигнорированы.Для этого вы, вероятно, могли бы использовать пустое поле.

В качестве альтернативы клиент может отправить, помимо полей, список полей, которые должны быть обновлены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...