Как менять код ошибки на OK(200) в ASP.NET во время валидации

Рейтинг: 0Ответов: 0Опубликовано: 04.05.2023

Задача следующая.

Хочу валидировать у модели конкретное поле. Задать атрибут данному полю нельзя т.к. модель не моя.

Валидация работает впринципе,но возвращает 400 код. Однако, необходимо возвращать в виде кода ответа 200.

Делаю значит следующим образом:

        [HttpPost]
        public async Task<IActionResult> Post([FromCustomBody] MyModel model)
        {
            return Ok();
        }

Где FromCustomBody это ValidationAttribute, со всеми параметрами от FromBody.

В ответ приходит код 400.

Судя по learn.microsoft.com, в этом виноват ApiController (https://learn.microsoft.com/en-us/aspnet/core/web-api/?view=aspnetcore-7.0#automatic-http-400-responses)

Так что варианта решения два:

  1. С помощью атрибутов авторизации производить Serilaze модели и проверять конкретные поля на валидацию. А после кидать возврат контекста (аля фильтры)
  2. Подменять коды 400 на 200 на уровне мидлварок или подобных штук.

В общем, прошу помощи как сделать это лучше.

Просто написать валидацию в методе нельзя т.к. именно этого и хочу избежать данным действием.

Ответы

Ответов пока нет.