【发布时间】:2013-04-03 14:32:44
【问题描述】:
我对 WebApi 有一个小问题。
问题: 如果我想使用 JSON 发布模型,我可以添加任意数量的成员,只要模型中定义的成员存在。
问题: 如果我的 Json 对象中存在未定义的成员,我如何触发异常。如果没有自定义 JsonConverter,这可以实现吗? 我正在寻找的是通用解决方案,而不是针对每个不同模型的转换。
示例:
型号:
public class Person
{
[Required]
public string Name { get; set; }
}
API 控制器:
public class PersonController : ApiController
{
public HttpResponseMessage Post(Person person)
{
if (person != null)
{
if (ModelState.IsValid)
{
//do some stuff
return new HttpResponseMessage(HttpStatusCode.OK);
}
}
return new HttpResponseMessage(HttpStatusCode.BadRequest);
}
}
Json 帖子(正文)
{"Name":"Joe"} --> 有效
{"Name":"Joe","InvalidMember","test","Name","John"} --> 也有效。在这种情况下,我想触发一个异常。因为如果你看它,它与我的模型定义不完全匹配。
【问题讨论】:
-
确实,这不是一个真正的问题,但我想强制我的客户使用所描述的 API,而不是用无用的信息填充它。它只是消耗带宽。如果 API 没有造成问题,客户端会不断发布额外的数据,甚至可能都不知道。
-
发布额外数据仍然会消耗带宽。在您检查其结构时,数据已经传输到服务器。不确定您是否试图阻止发布额外的数据。在这种情况下,您必须在客户端解决问题。
-
是的,我知道。我想要的只是让客户知道发布额外的数据,仅此而已。 “嘿,你发布了我不需要的数据。清理你的帖子,然后再试一次”。如果忽略多余的数据,客户端会继续发布,从而导致不必要的网络流量。
标签: c# asp.net-web-api