【问题标题】:Json Post Object to AspNetCore not workingJson 将对象发布到 AspNetCore 不起作用
【发布时间】:2019-05-09 11:26:09
【问题描述】:
[![enter image description here][1]][1]


[1]: https://i.stack.imgur.com/nvl1G.png

[Route("api/values")]
[ApiController]
public class ValuesController : ControllerBase
{
    [Route("asd")]
    [HttpGet]
    public ActionResult<IEnumerable<string>> Get()
    {

        return new string[] { "value1", "value2" };
    }

    [Route("Test")]
    [HttpPost]
    public IActionResult Test([FromBody] Person p)
    {
        return Ok(p);
    }
}

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
}  

我正在为 web api 使用 asp.net 核心。目前正在做测试。正在使用邮递员将 json 对象发布到 web api。但我无法得到对象。 下面是web api返回的消息

{
   "errors": {
    "": [
        "A non-empty request body is required."
    ]
   }  ,
   "title": "One or more validation errors occurred.",
   "status": 400,
   "traceId": "80000099-0007-fd00-b63f-84710c7967bb"
}

【问题讨论】:

  • 您在请求中的路线是“人”,但在代码中是“测试”???

标签: c# json post asp.net-core


【解决方案1】:

请分享您在 Postman 中提供的有效负载。请确保您将有效负载作为对象添加到正文部分,并将内容类型设置为 JSON(application/json)。

有效负载应与您的对象匹配。在您的情况下,它可以是:

{
   "FirstName": "my First Name",
   "LastName" : "my last Name",
   "Age": 28
}

此外,在您的情况下,Asp.Net Core 中不需要 [FromBody],因为它默认为复杂类型序列化。

https://docs.microsoft.com/en-us/aspnet/core/web-api/?view=aspnetcore-2.2

[FromBody] 是为复杂类型参数推断的。一个例外 [FromBody] 推理规则是任何复杂的内置类型 特殊含义,如 IFormCollection 和 CancellationToken。这 绑定源推理代码会忽略那些特殊类型。

[FromBody] 不会被推断为简单类型,例如字符串或 int。 因此,[FromBody] 属性应该用于简单类型 当需要该功能时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    • 2017-10-09
    • 2017-06-06
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多