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

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

目前我有一个 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/

相关文章:

c# - EF Core 事务顺序和外键约束

php - Laravel Eloquent - 在 PostgreSQL 中更新 JSON col 时遇到问题

c# - 如何在 C# 中读取( native )DLL 的导出函数名称?

c# - 以文本形式返回数字

c# - Log4Net 错误 : Failed to find configuration section 'log4net' in the application's . 配置文件

java - org.json 字符编码/解码问题

javascript - 将具有 toJSON 方法的对象数组序列化为 JSON 时出现奇怪的错误

c# - 使用 LINQ 获取表中的位置

.net - @{} 和 [Hashtable]::Clear() 有什么区别?

c# - 需要UAC protected 资源的完整列表才能以标准用户身份运行我的应用程序(未提升)