Asp.Net WebAPI, как валидировать только структуру запроса, но не данные
Допустим, что есть такая DTO:
public class MyDto
{
[Required]
public string First { get; set; }
public string[] Second { get; set; }
}
Вопрос: как валидировать только структуру запроса, но игнорировать [Required]
поле (сразу отвечу на вопрос, что Required
у него стоит для Swagger'a и убирать его не хотелось бы), т.к. дальше будет этим заниматься FluentValidation
Т.е. запрос вида:
{"first": "", "second": []}
Будет валидный
А запрос вида:
{"first": 1, "second": []}
Уже не валидный, т.к. first теперь имеет тип int, а ожидалось string, эту ошибку и нужно будет показать клиенту и не более.
Пробовал переопределить всё это дело через ConfigureApiBehaviorOptions => InvalidModelStateResponseFactory
, но туда попадают и Required (и подобные) ошибки.
Использую Net 7.
Источник: Stack Overflow на русском