.NET Core [FromBody] 注释分配默认值而不是在缺少值时返回 400 错误
.NET Core [FromBody] annotation assigns default value instead of returning 400 error if value is missing
我创建了一个类似于
的控制器方法
[HttpPost]
public ActionResult<MyDTO> Post([FromBody] MyDTO myDTO)
{
// do something with myDTO...
Ok();
}
和 MyDTO:
namespace MyNamespace.DTO
{
public class MyDTO
{
[Required]
public int someNumber { get; set; }
[Required]
public bool someBool { get; set; }
[Required]
public DateTimeOffset someDate { get; set; }
}
}
当我发送一个 post 和一个没有定义的 JSON 主体时,而不是 return 一个 400 或某种异常,它只是分配它们的默认(虚假)值。
当我定义另一个 DTO class 的列表时,它 return 一个 400 代码。
当没有提供某些必需的值而不是仅使用默认值时,如何使 API return 出错?
你必须手动控制它。没有别的办法了。
试试
[HttpPost]
public ActionResult<MyDTO> Post([FromBody] MyDTO myDTO)
{
if(YourComprobation(myDto)){
BadRequest();
}
Ok();
}
找到答案。
我只需要让所有字段都可以为空,并且有一个
if (!ModelState.IsValid)
// return 400
在控制器中。
我创建了一个类似于
的控制器方法[HttpPost]
public ActionResult<MyDTO> Post([FromBody] MyDTO myDTO)
{
// do something with myDTO...
Ok();
}
和 MyDTO:
namespace MyNamespace.DTO
{
public class MyDTO
{
[Required]
public int someNumber { get; set; }
[Required]
public bool someBool { get; set; }
[Required]
public DateTimeOffset someDate { get; set; }
}
}
当我发送一个 post 和一个没有定义的 JSON 主体时,而不是 return 一个 400 或某种异常,它只是分配它们的默认(虚假)值。
当我定义另一个 DTO class 的列表时,它 return 一个 400 代码。
当没有提供某些必需的值而不是仅使用默认值时,如何使 API return 出错?
你必须手动控制它。没有别的办法了。
试试
[HttpPost]
public ActionResult<MyDTO> Post([FromBody] MyDTO myDTO)
{
if(YourComprobation(myDto)){
BadRequest();
}
Ok();
}
找到答案
我只需要让所有字段都可以为空,并且有一个
if (!ModelState.IsValid)
// return 400
在控制器中。