说我有一个通过 POST 工作的 WebApi,并且 Api 可以有 3 个参数
api/登录
参数 -user -password -logo(可选)
当我调用这个 api 时,我可以跳过 logo 参数吗?
将可选参数放入 POST 类型的真正含义是什么?有强制性的吗?
说我有一个通过 POST 工作的 WebApi,并且 Api 可以有 3 个参数
api/登录
参数 -user -password -logo(可选)
当我调用这个 api 时,我可以跳过 logo 参数吗?
将可选参数放入 POST 类型的真正含义是什么?有强制性的吗?
两件事情:
对于 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