.NET Core REST API从请求中检测放置/发布字段

时间:2018-10-22 07:03:08

标签: rest api .net-core

我有一个用于创建/更新其表中有5个字段的数据对象的端点。

有5个创建字段:

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

当请求者致电我的端点时,我想检测请求正文中张贴的字段。因为我将使用那些发布的字段进行更新。我不想使用其他字段。

例如:请求者使用5个字段创建了数据。一段时间后,requster刚刚发布了3个要更新的字段。他不想更新其他2个字段。因此,我需要检测发送到端点的字段,并仅更新这三个字段。

1 个答案:

答案 0 :(得分:0)

如果客户端不包含模型中的一个或多个字段,则称为“欠帐”。在这种情况下,除非您已根据需要(使用属性)将缺少的字段标记为必填字段,否则它们将被设置为默认值。

因此,假设您可以为每个字段设置一个“魔术”默认值(一个不是来自客户端的值),则可以确定哪些是由客户端发送的,哪些不是,并相应地更改逻辑。例如:

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); }
   ...
}

棘手的部分是布尔值之类的字段,在其中不能忽略任何可能的值。为此,您可以使用可为空的字段。

另一种选择是让客户端除了发送字段之外,还发送应更新的字段列表。