.NET中的POST请求中的可选参数?

时间:2013-05-29 18:48:48

标签: .net post asp.net-web-api

说我有一个WebApi在POST上工作,而Api可以有3个参数

API /登录

参数 -用户 -密码 -logo(可选)

当我打电话给这个api时,我可以跳过徽标参数吗?

将可选参数放入POST类型的真正含义是什么? 有强制性吗?

1 个答案:

答案 0 :(得分:0)

两件事:

  1. 如果在WebApi中发出POST请求,则控制器方法中只能有一个参数。身体被读取一次,所以如果你有两件事要读它,你需要将它们包裹在一个复杂的物体中,例如:

    class ValuesDto
    {
      public int Value1 {get; set;}
      public string Value2 { get; set;}
    }
    

    控制器方法将复杂对象作为参数:

    [HttpPost]
    public HttpResponseMessage CreateValues(ValuesDto values) {}
    
  2. 但是,原始问题的答案是:

    在评估路由时,WebApi不会验证请求的整个POST部分 - 在选择路由时,只有url路径所包含的参数才会被绑定。这意味着POST参数是可选的。

  3. 一些链接

    http://blogs.msdn.com/b/jmstall/archive/2012/04/16/how-webapi-does-parameter-binding.aspx

    http://www.strathweb.com/2013/04/asp-net-web-api-parameter-binding-part-1-understanding-binding-from-uri/