Asp.net web api Web API-来自URI的JObject
Web API允许我在JObject中捕获POST请求的主体:Asp.net web api Web API-来自URI的JObject,asp.net-web-api,json.net,Asp.net Web Api,Json.net,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
$.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
}
这里有什么解决方法吗?它不起作用,因为GET请求没有正文,因此没有内容类型。因此,Web API不知道URL中有JSON。您有几个选择:
JObject obj=JObject.Parse(data)代码>
我的建议是选择1。传统上,GET方法只是用来查找某些内容,所以实际上您应该只传递id和简单的查询选项。在URL中传递JSON数据是不常见的。URL的长度也可能受到某些浏览器的限制。如果您发现需要传递JSON数据,请改用POST(或PUT)。最后只对所有请求使用POST。本来希望能够在语义正确的情况下使用GET for,但是考虑到我们的API是动态生成的,我需要一种使GET参数也是动态的方法(因此JObject)