【问题标题】:How do I bind a simple POST value in ASP.NET WebAPI RC?如何在 ASP.NET WebAPI RC 中绑定一个简单的 POST 值?
【发布时间】:2013-04-05 19:54:09
【问题描述】:

我的一个 API 控制器上有一个 POST 方法,它采用单个字符串值:

public string Post([FromBody] string foo) {
    return(fooOracle.ValidateFoo(foo) ? "success" : "failure");
}

我将发布请求的正文发布到此:

foo=123412341234

(即它是一个常规的 HTTP POST,您可以通过提交浏览器表单以及使用 HTTP 客户端来启动它)

在 WebAPI 的候选版本中,这已经默默地停止工作 - 它不再绑定 foo 了。为了让代码工作,我不得不用这个替换方法:

public string Post(FormDataCollection form) {
    var foo = form.Get("foo");
    return(fooOracle.ValidateFoo(foo) ? "success" : "failure");
}

这个工作,但它有点乱,并且比以前的版本需要更多的管道测试。

我是否遗漏了一些细微的变化,或者 [FromBody] 绑定语法已被弃用,转而采用这种相当冗长的绑定语法?该属性仍然存在,但实际上并不清楚它在 RC 版本中的实际作用。

【问题讨论】:

标签: asp.net-web-api


【解决方案1】:

实际上有一个细微的变化,它不能处理像 'foo=123412341234' 这样的输入,但会处理 '=123412341234' 作为输入。您可以让客户稍后发送吗?

如果不是,您可以创建一个如下所示的包装器类,并让您的操作将 stringwrapper 作为参数而不是 String 本身。

类 StringWrapper { public string Foo {get;设置;} }

【讨论】:

    猜你喜欢
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    • 2013-05-15
    • 2012-10-18
    相关资源
    最近更新 更多