我的WebApi中有一个POST方法,它以json字符串作为参数。
[HttpPost]
public HttpResponseMessage GetOrderDataBySessionId([FromBody] string json)
我尝试使用带有URL的RestClient来点击它: localhost:56934 / api / Home / GetOrderDataBySessionId
并在Body中指定以下json字符串:
{
"ListSessionId": [
"180416073256DGQR10",
"180416091511DGQR10"
]
}
将正文/内容类型设置为 application / json 。但是当它遇到我的方法时,json
字符串参数始终为null。
是因为我需要在参数中使用复杂类型吗?
我们永远不能在字符串中输入吗?
答案 0 :(得分:2)
发送此内容:
{
"ListSessionId": [
"180416073256DGQR10",
"180416091511DGQR10"
]
}
您发送的JSON代表了一个以字符串数组式输入的属性ListSessionId
,因此您的Web API操作应为:
public HttpResponseMessage GetOrderDataBySessionId([FromBody] List<string> listSessionId)
只需将string json
更改为List<string> listSessionId
。
答案 1 :(得分:0)
我已经解决了这个问题。
客户端代码:
$.ajax({
url: "/api",
type: "post",
data: "p1=1&p2=2"
});
服务器中的代码:
[HttpPost]
public string Post([FromForm] string p1, [FromForm] string p2)
{
return p1+p2;
}
有3个关键点:
[FromForm]
而不是[FromBody]
的参数。