检测frombody post payload中的额外属性

时间:2018-01-12 20:37:19

标签: asp.net asp.net-web-api2

我正在寻找一种方法来检测WebAPI帖子有效负载上提供的额外属性,这些属性与我期望的POCO不匹配。例如,这是一个输入对象:

public class Input
{
    public string Name { get; set; }
}

控制器方法:

public void Post([FromBody]Input value)

如果客户端发送以下帖子有效负载:

{
    "Name" : "Foo",
    "Description" : "Bar"
}

这将触发我的控制器上的Post方法,并且将填充Name。我想知道描述已被发送但被忽略,因此我可以记录该事件服务器端,或通过响应头通知客户端他们正在发送额外数据。

1 个答案:

答案 0 :(得分:1)

我认为这是可能的,但如果你想要一个通用的解决方案,你必须没有模型绑定并使用反射:

类别:

  var ss = SpreadsheetApp.openById("1QARjdbtFpERRkP7Mw7Ud56plOygMzQawjQbXsbf9Hgw");
  var mh1 = ss.getRange ("Helicopter Status!C4");
  var mh2 = ss.getRange ("Helicopter Status!C5");
  var hellcat1 = ss.getRange ("Helicopter Status!C6");
  var hellcat2 = ss.getRange ("Helicopter Status!C7");
  var form = FormApp.getActiveForm();
  var item = form.addListItem();
  var items = form.getItems();
  var deleteold = items[2];
  form.deleteItem(deleteold);
  Utilities.sleep(200);
  item.setTitle('Helicopters')
     .setRequired(true)
     .setChoices([
           if(mh1 == 'Fine'){
           item.createChoice('MH-9 #1'),
           }
           item.createChoice('MH-9 #2'),
           item.createChoice('Hellcat #1'),
           item.createChoice('Hellcat #2')
     ])
  var items = form.getItems();
  var movenew = items[5];
  form.moveItem(movenew, 2)

有效载荷:

public class Input
{
    public string Name { get; set; }
}

控制器方法:

{
    "Name" : "Foo",
    "Description" : "Bar"
}

对于上面的示例,extraContent将是一个包含“Description”的列表。如果你想要值,只需使用字典对象。