Skip to main content
 首页 » 编程设计

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

2024年02月05日32lyj

目前我有一个 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)将相应地填充对象。