我在我的一个API控制器上有一个POST方法,它接受一个字符串值:
public string Post([FromBody] string foo) {
return(fooOracle.ValidateFoo(foo) ? "success" : "failure");
}
Run Code Online (Sandbox Code Playgroud)
我正在使用帖子请求的正文发布到这个:
foo=123412341234
Run Code Online (Sandbox Code Playgroud)
(即,您可以通过提交浏览器表单以及使用HTTP客户端来启动常规HTTP POST)
在WebAPI的候选版本中,它已经默默地停止工作 - 它只是不再绑定foo.为了使代码正常工作,我必须用以下方法替换方法:
public string Post(FormDataCollection form) {
var foo = form.Get("foo");
return(fooOracle.ValidateFoo(foo) ? "success" : "failure");
}
Run Code Online (Sandbox Code Playgroud)
这可行,但它有点混乱,涉及比以前版本更多的管道测试.
我是否错过了一些微妙的变化,或者是否已弃用[FromBody]绑定语法而支持这种相当冗长的绑定语法?该属性仍然存在,但它真的不清楚它在RC版本中实际做了什么.
小智 1
实际上有一个微妙的变化,它无法处理像“foo=123412341234”这样的输入,但会处理“=123412341234”作为输入。你能让客户稍后发送吗?
如果没有,您可以创建一个包装类,如下所示,并使您的操作期望 stringwrapper 作为参数而不是 String 本身。
类 StringWrapper { 公共字符串 Foo {get; 放;} }
| 归档时间: |
|
| 查看次数: |
1598 次 |
| 最近记录: |