说我有一个WebApi在POST上工作,而Api可以有3个参数
API /登录
参数 -用户 -密码 -logo(可选)
当我打电话给这个api时,我可以跳过徽标参数吗?
将可选参数放入POST类型的真正含义是什么? 有强制性吗?
答案 0 :(得分:0)
两件事:
如果在WebApi中发出POST请求,则控制器方法中只能有一个参数。身体被读取一次,所以如果你有两件事要读它,你需要将它们包裹在一个复杂的物体中,例如:
class ValuesDto
{
public int Value1 {get; set;}
public string Value2 { get; set;}
}
控制器方法将复杂对象作为参数:
[HttpPost]
public HttpResponseMessage CreateValues(ValuesDto values) {}
但是,原始问题的答案是:
在评估路由时,WebApi不会验证请求的整个POST部分 - 在选择路由时,只有url路径所包含的参数才会被绑定。这意味着POST参数是可选的。
一些链接
http://blogs.msdn.com/b/jmstall/archive/2012/04/16/how-webapi-does-parameter-binding.aspx