Web API允许我在JObject中捕获POST请求的主体:
$.post('/api/Query/DoSomething', { Foo: "one", Bar: 4 });
public string Post(JObject data)
{
// data is populated
}
但是,相同的技术不适用于get请求和URI参数。
$.get('/api/Controller', { Foo : "one", Bar : 4 });
public string Get([FromUri]JObject data)
{
// data is empty
}
这里有解决方法吗?
答案 0 :(得分:3)
它不起作用,因为GET请求没有正文,因此没有内容类型。因此,Web API不知道您的URL中有JSON。你有几个选择:
JObject obj = JObject.Parse(data);
我的建议是选项1.传统上,GET方法只是为了查找内容,所以你真的应该只传递ID和简单的查询选项。在URL中传递JSON数据是不常见的。此外,某些浏览器可能会限制URL的长度。如果您发现需要传递JSON数据,请改用POST(或PUT)。