【问题标题】:Receiving parameters with FromBody使用 FromBody 接收参数
【发布时间】:2018-01-29 22:01:27
【问题描述】:

我有一个网络服务,我需要接收多个参数,其中一个是列表。

这是webservice方法:

 [HttpPost("complete/{requestId}")]
 public IActionResult CompleteRequest([FromBody] RequestComplete requestComplete, int requestId)
 {

      if (requestId == 0)
      {
           return BadRequest();
      }

      if (requestComplete == null)
      {
           return BadRequest();
      }
      // execute code
 }

RequestComplete 类如下所示:

public class RequestComplete
{
    public int RequestId { get; set; }
    public int UserId { get; set; }
    public string emailCC { get; set; }
    public string emailSubject { get; set; }
    public string calcsNeeded { get; set; }
    public string ssiComment { get; set; }
    public List<CompleteFileUpload> completeFiles { get; set; }

}

而 CompleteFileUpload 类是这样的:

public class CompleteFileUpload
{
    public int RequestFileId { get; set; }
}

从 PostMan 我使用这样的帖子正文:

{
    "calcsNeeded" : "4",
    "completeFiles": {"RequestFileId": "384"},
    "emailCC" : "test@email.com",
    "emailSubject": "subject here",
    "ssiComment":"Thanks for your request."
}

我的期望是 Postman 发布的 json 将被正确格式化以被 CompleteRequest 方法接受。但是,事实并非如此。如果我删除 json 的 completeFiles 部分,它运行良好。

我错过了什么?

【问题讨论】:

    标签: c# asp.net json web-services


    【解决方案1】:

    JSON 中“completeFiles”的定义没有定义一个 JSON 数组,它定义了一个单一的对象。如果定义是,该 JSON 将是有效的:

    public class RequestComplete
    {
        ...
        public CompleteFileUpload completeFiles { get; set; }
    }
    

    尝试将 JSON 更改为:

    {
        "calcsNeeded" : "4",
        "completeFiles": [ {"RequestFileId": "384"}, {"RequestFileId": "123"} ],
        "emailCC" : "test@email.com",
        "emailSubject": "subject here",
        "ssiComment":"Thanks for your request."
    }
    

    希望对你有帮助

    【讨论】:

    • 完美。我错过了定义数组的括号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多