5

我的一个 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 版本中的实际作用。

4

1 回答 1

1

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

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

类 StringWrapper { public string Foo {get; 放;} }

于 2012-06-14T22:27:10.937 回答