Поднимите json ошибка проверки при неверном json использовании. net core json привязки модели - PullRequest
1 голос
/ 16 марта 2020

У меня есть несколько простых контроллеров, которые используют. net привязку базовой модели для создания сущности с использованием json ввода.

При отправке недействительных json (json, которые не могут быть проанализированы правильно из-за опечатки или отсутствующего escape) пользователь будет нулевым, и будет выдана бесполезная ошибка.

Как я могу вызвать ошибку проверки 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));
}

1 Ответ

1 голос
/ 16 марта 2020

Есть 2 вещи, которые можно сделать:

Во-первых, если это 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...