更改Web Api 2 Post方法以接受修改后的正文

时间:2016-09-21 17:57:11

标签: c# .net json asp.net-web-api httprequest

目前我有一个接收对象类型的API,如下所示。

public HttpResponseMessage Post(Job job) {}

当收到与Job类型匹配的直接(或部分)对象时,一切都按预期工作。问题是我们正在修改JSON对象以在主体中包含更多信息,这阻止了序列化程序知道如何处理它。 我们的新要求如下。

{  
   "httpHeaders":{  
   },
   "payload":{  
    }
}

我们收到的“旧”对象现在位于“有效载荷”中。我是否需要覆盖方法,可能是Media Formatter

由于

1 个答案:

答案 0 :(得分:4)

创建一个包含Job类型的类型作为名为Payload的属性,另一个属性名为HttpHeaders,包含预期的模型结构。我不知道为什么你要在有效载荷体中发送Http头。

模型绑定将尝试将请求主体的结构与预期模型的结构相匹配。在这种情况下,您将从期望类型Job,到接受包含Job的类型。所以,你会创建一个这样的超类型:

public class InputModel {
    public Job Payload {get;set;}
    public HeaderType HttpHeaders {get;set;}
}

然后,ASP.NET模型绑定将相应地填充对象。