来自邮递员的POST请求未能通过模型​​验证

时间:2019-04-02 08:13:30

标签: c# asp.net json asp.net-web-api postman

在我的ASP.NET WebApi程序中,我有一个Author模型:

public class Author
{
    public int Id { get; set; }
    [Required] public string Name { get; set; }
}

我还有一个AuthorsController和一个PostAuthor(Author author)方法:

// POST: api/Authors
[ResponseType(typeof(Author))]
public async Task<IHttpActionResult> PostAuthor(Author author)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    // etc.
}

当我在单元测试中以编程方式发送POST请求时,将返回HTTP Status Code 201 Created

enter image description here

但是,当我使用Postman发送POST请求时,却收到HTTP Status Code 400 Bad Request

enter image description here

如您所见,当我使用POST发送Postman请求时,传递给PostAuthor(Author author)方法的参数为null,因此模型验证失败:

enter image description here

我该怎么做以确保可以处理来自POST的{​​{1}}请求?

3 个答案:

答案 0 :(得分:1)

变更夫妇:将其定义为HttpPost,然后像使用FromBody

// POST: api/Authors
[HttpPost]
[ResponseType(typeof(Author))]
public async Task<IHttpActionResult> PostAuthor([FromBody] Author author)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    // etc.
}

答案 1 :(得分:1)

在邮递员正文中用=替换=,毕竟是JSON。

答案 2 :(得分:0)

如果您以application / json格式发送并且您的API等待以INBOUND JSON格式发送,请尝试以JSON格式发送,例如

{
"Id":"6",
"Name":"P.G. Wodehouse"
}