目前我有一个 API 正在接收如下对象类型。
public HttpResponseMessage Post(Job job) {}
当收到与 Job
类型匹配的直接(或部分)对象时,一切都按预期工作。问题是我们正在修改 JSON 对象以在正文中包含更多信息,这会阻止序列化程序知道如何处理它。
我们的新要求如下。
{
"httpHeaders":{
},
"payload":{
}
}
我们收到的“旧”对象现在位于“有效负载”中。我是否需要重写一个方法,也许是一个 Media Formatter ?
谢谢
最佳答案
创建一个包含您的作业类型的类型作为名为 Payload 的属性,以及另一个名为 HttpHeaders 的属性,该属性包含预期的模型结构。我不知道您为什么要在有效负载正文中发送 Http header 。
模型绑定(bind)将尝试将请求主体的结构与预期模型的结构相匹配。在这种情况下,您将从期望类型 Job 转变为接受包含 Job 的类型。因此,您可以像这样创建一个父类(super class)型:
public class InputModel {
public Job Payload {get;set;}
public HeaderType HttpHeaders {get;set;}
}
然后 ASP.NET 模型绑定(bind)将相应地填充对象。
关于c# - 更改 Web Api 2 Post 方法以接受修改后的正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39623469/