【问题标题】:Send 2 or more Raw Body Parameters Post Request with Postman使用 Postman 发送 2 个或更多原始正文参数发布请求
【发布时间】:2018-11-10 15:21:16
【问题描述】:

我有一个 ASP.NET Core 2.0 API 方法:

[HttpPost("api/days")]
GetDays([FromBody] DateTime startTime, [FromBody]DateTime endTime)
{

}

我尝试用 Postman 发送 Post 请求,但是有一个问题,参数总是有默认值。

这是我的 Post 请求的样子:

结果:无效; API 方法中的两个参数都获取默认值。

如果我将 API 参数更改为:

[HttpPost("api/days")]
GetDays([FromBody] Inputparam param)
{

}

public class Inputparam
{
    public DateTime startTime { get; set; }
    public DateTime endTime { get; set; }
}

效果很好!

但我想直接发送参数,而不是在包装对象内。

所以,我用第一个 API 方法回来了,然后我尝试了:

结果:无效; API 方法中的两个参数都获取默认值。

还有这个:

结果:不完美;只是第一个参数(startTime)设置它,第二个参数仍然有默认值。

还有这个:

结果:无效; API 方法中的两个参数都获取默认值。

我还在 API 中尝试了 [FromForm] 而不是 [FromBody],没有任何改变。

如果我不在 api 中使用 [FromBody] 并通过 x-www-form-urlencoded 发送请求,那就完美了。

但我需要用 JSon 发送原始正文。

如何将 2 个不同的参数作为原始正文 json 发送?

有什么想法吗? 问题出在哪里?

【问题讨论】:

    标签: asp.net-web-api asp.net-core postman asp.net-core-2.0 asp.net-core-webapi


    【解决方案1】:

    我发现它只是 API 中的一个 [FromBody] is allowed,这是有道理的。所以答案可能是:[FromBody] 属性不可能有 2 个或更多参数。

    【讨论】:

      【解决方案2】:

      [FromUri] 可以完成这项工作。供您参考Microsoft Documentation

      public class DateTimes
      {
      public datetime startdate { get; set; } 
      public datetime enddate { get; set; }
      }
      
      GetDays([FromBody] DateTimes _date)
      {
        //Controller action
      }
      

      URI:

      api/values/?startdate=2018-06-01&endate=2018-07-01
      

      【讨论】:

      • 这不是由 Raw Body 发布的
      猜你喜欢
      • 2018-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-04
      • 2018-09-15
      相关资源
      最近更新 更多