@OwDafuq

Как валидировать только структуру запроса, но не данные?

Допустим, что есть такая 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.
  • Вопрос задан
  • 78 просмотров
Пригласить эксперта
Ответы на вопрос 1
vabka
@vabka Куратор тега ASP.NET
Токсичный шарпист

сразу отвечу на вопрос, что Required у него стоит для Swagger'a и убирать его не хотелось бы

Атрибуты - это не единственный вариант создать схему.
Посмотри в той библиотеке, которую ты используешь, может там есть атрибут для добавления произвольных данных в схему?

+ Ты можешь в принципе отключить валидацию из asp net mvc

services.Configure<ApiBehaviorOptions>(options =>
        {
            options.SuppressModelStateInvalidFilter = true;
        });
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы