繁体   English   中英

带有字符串参数的 WebApi POST 方法始终为 null

[英]WebApi POST method with string parameter is always null

我的 WebApi 中有一个 POST 方法,它将 json 字符串作为参数。

[HttpPost]  
public HttpResponseMessage GetOrderDataBySessionId([FromBody] string json)

我尝试使用带有 URL 的 RestClient 命中它: localhost:56934/api/Home/GetOrderDataBySessionId

并在正文中指定以下 json 字符串:

{
  "ListSessionId": [
    "180416073256DGQR10",
    "180416091511DGQR10"
  ]
}

将正文/内容类型设置为application/json 但是当它命中我的方法时, json字符串参数始终为空。

是因为我需要在参数中使用复杂类型吗?

我们永远不能输入字符串吗?

通过发送此内容:

{
  "ListSessionId": [
    "180416073256DGQR10",
    "180416091511DGQR10"
  ]
}

您发送的 JSON 用属性ListSessionId表示,类型为字符串数组,因此您的 Web API 操作应该是:

public HttpResponseMessage GetOrderDataBySessionId([FromBody] List<string> listSessionId)

只需将string json更改为List<string> listSessionId

我已经解决了这个问题。

客户端代码:

$.ajax({
            url: "/api",
            type: "post",
            data: "p1=1&p2=2"
        });

服务器中的代码:

[HttpPost]
public string Post([FromForm] string p1, [FromForm] string p2)
{
    return p1+p2;
}

有三个关键点:

  1. 客户端和服务器中的参数名称必须相同。
  2. 在客户端,参数前面必须有[FromForm]而不是[FromBody]
  3. 甚至可以添加多个参数,但参数名称必须对应。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM