繁体   English   中英

使用 .net 核心 json 模型绑定在无效 json 上引发 json 验证错误

[英]Raise json validation error on invalid json using .net core json model binding

我有一些简单的控制器,它们使用 .net 核心模型绑定来使用 json 输入创建实体。

当发送无效的 json(json,由于拼写错误或缺少转义而无法正确解析)时,用户将为 null,并且将抛出无用的错误。

我如何引发 json 验证错误并返回信息,即 json 对 api 调用者格式不正确?

[HttpPost]
[ProducesResponseType(typeof(User), StatusCodes.Status200OK)]
[ProducesResponseType(typeof(HttpErrorResponse), StatusCodes.Status500InternalServerError)]
public async Task<IActionResult> Post([FromBody]User user)
{
    return Ok(this.userService.CreateNewUser(user));
}

有两件事可以做:

首先,如果它是一个 API,那么使用ApiController属性而不是Controller属性。 这将为您处理模型状态/解析错误处理。

另一个选项是检查ModelState.IsValid 例如

public async Task<IActionResult> Post([FromBody]User user)
{
    if(!this.ModelState.IsValid)
       return BadRequest(this.ModelState);
    return Ok(this.userService.CreateNewUser(user));
}

第一个选项有我的偏好。 也因为它似乎在无效 json 的情况下会产生更好的错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM