【问题标题】:Web API: Make action parameter mandatoryWeb API:强制操作参数
【发布时间】:2013-06-15 01:23:04
【问题描述】:

我有一个看起来像这样的动作:

[HttpPost]
public HttpResponseMessage PostInstantiation(Guid id, [FromBody]Instantiation instantiation)

如果用户对正确的 URL 进行 POST,但没有 (/empty) 正文,则模型验证不会失败,并且实例化参数为 null。我预计它会失败。

处理这种情况的正确方法是什么?

【问题讨论】:

    标签: null asp.net-web-api parameterbinding


    【解决方案1】:

    是的,对...您注意到的是预期行为。如果您确实想检查用户是否发送了空正文,那么您可以检查传入请求的 Content-Length 标头。

    if(Request.Content.Headers.ContentLength == 0)

    【讨论】:

    • 或者,我可以这样做: if (instantiation == null) throw new ArgumentNullException();我希望除了 [FromBody] 之外,我还可以应用一个属性来表明它是必需的参数。遗憾的是 [Required] 属性在此处不适用。
    • 检查if(instantation==null) 的问题是,假设您在客户端使用 web api 的 Json 和 Xml 格式化程序。这些格式化程序将在 Json 格式化程序的情况下序列化 null,并且相应的 Xml 格式化程序将有自己的表示形式,即正文将有一个值。所以你需要弄清楚是否确实有一个身体。
    猜你喜欢
    • 2016-05-12
    • 2013-03-20
    • 1970-01-01
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    相关资源
    最近更新 更多