Как менять код ошибки на OK(200) в ASP.NET во время валидации
Задача следующая.
Хочу валидировать у модели конкретное поле. Задать атрибут данному полю нельзя т.к. модель не моя.
Валидация работает впринципе,но возвращает 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)
Так что варианта решения два:
- С помощью атрибутов авторизации производить Serilaze модели и проверять конкретные поля на валидацию. А после кидать возврат контекста (аля фильтры)
- Подменять коды 400 на 200 на уровне мидлварок или подобных штук.
В общем, прошу помощи как сделать это лучше.
Просто написать валидацию в методе нельзя т.к. именно этого и хочу избежать данным действием.
Источник: Stack Overflow на русском