【发布时间】:2016-10-23 06:27:12
【问题描述】:
所以,根据this:
- 如果参数是“简单”类型,Web API 会尝试获取值 从 URI。简单类型包括 .NET 原始类型(int、 bool、double 等),加上 TimeSpan、DateTime、Guid、decimal、 和字符串,加上任何带有类型转换器的类型,可以从 一个字符串。 (稍后会详细介绍类型转换器。)
- 对于复杂类型,Web API 尝试使用媒体类型从消息正文中读取值 格式化程序。
我有一个 POST 操作,其中包含来自用户输入的单个 string 参数,因此可以是任何字符 - 外来字符、unicode、撇号、'%20' 等任何字符!
因此,我不愿意在 URL 中包含此参数,而 [FromBody] 装饰器似乎没有帮助。问题是:将单个字符串参数发布到 WebAPI 控制器的最佳 [a-hem] 实践是什么?
C#:
[HttpPost]
[Route("api/add")]
public void Add([FromBody]string name)
{
// name is null :(
}
JS:
function add(name: string) {
return this.$http.post("api/add/", name);
}
【问题讨论】:
-
我只是尝试通过 post 请求发送简单的字符串,而没有来自角度的
[FromBody]属性。我在请求正文中发送了我的值。它有效。您可以检查它生成的请求吗? (在浏览器或提琴手) -
字符串值周围没有引号,这太荒谬了!
-
供您参考,您没有屏蔽图片中的所有
/localhost/****/实例:p -
@Tsar - 你的问题解决了吗?
-
如果没有,我有两种可能的解决方案。 1)您可以在请求负载中发送对象(例如 { name : "my requested name" })或 2)创建并使用自定义属性来处理不带引号的正文中的字符串
标签: c# rest http asp.net-web-api