1

说我有一个通过 POST 工作的 WebApi,并且 Api 可以有 3 个参数

api/登录

参数 -user -password -logo(可选)

当我调用这个 api 时,我可以跳过 logo 参数吗?

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

4

1 回答 1

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 参数是可选的。

一些链接

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/

于 2013-05-29T19:27:17.167 回答