C# - ModelState необходим в текущей версии веб-API C#? ⇐ C#
-
Гость
C# - ModelState необходим в текущей версии веб-API C#?
Я отправляю на свой сервер POST со следующими данными:
{ «идентификатор»: 0, «usuarioId»: 35, "titulo": "Тестирование", "описание": "", «доблесть»: 1.11, "vencimento": "111111-11-11" } Свойство истечения срока действия — это поле даты в DTO, которое является маршрутом POST.
публичный класс DespesaDTO { общественный ИНТ Id {получить; набор; } общественный ИНТ UsuarioId {получить; набор; } // Chave estrangeira для обычного пользователя общедоступная строка? Название {получить; набор; } общедоступная строка? Описание {получить; набор; } общественная двойная доблесть {получить; набор; } [Столбец(TypeName="Дата")] общественный DateTime Vencimento {получить; набор; } общественный DateTime CreatedAt {get; набор; } общественный DateTime UpdatedAt {get; набор; } } Мой контроллер выглядит следующим образом:
[HttpPost] общедоступная асинхронная задача Post (модель DespesaDTO) { пытаться { Despesa despesa = _mapper.Map(модель); Usuario usuario = await _unitOfWork.UsuarioRepository.GetByIdAsync(x => x.Id == model.UsuarioId); если (usuario == ноль) { return NotFound("Обычная информация не существует!"); } despesa.UsuarioId = usuario.Id; Console.WriteLine("TEST 2" + Despesa); _unitOfWork.DepesaRepository.Add(despesa); дождитесь _unitOfWork.CommitAsync(); Результат DespesaDTO = _mapper.Map(despesa); вернуть ОК (результат); } поймать (Исключение ex) { выдать новое исключение (ex.Message); } } Я получаю ошибку:
{ "заголовки": { "нормализованные имена": {}, «ленивое обновление»: ноль }, "статус": 400, "statusText": "Неверный запрос", "url": "http://localhost:5241/api/v1/despesa/", «ок»: ложь, "name": "HttpErrorResponse", "message": "Ответ об ошибке HTTP для http://localhost:5241/api/v1/despesa/: 400 неверный запрос", "ошибка": { "тип": "https://tools.ietf.org/html/rfc7231#section-6.5.1", "title": "Произошла одна или несколько ошибок проверки.", "статус": 400, "traceId": "00-239d1c05419ba94750eb48062e2509a6-91bebea55feef9cc-00", "ошибки": { "модель": [ «Поле модели обязательно». ], "$.vencimento": [ «Не удалось преобразовать значение JSON в System.DateTime. Путь: $.vencimento | LineNumber: 0 | BytePositionInLine: 102». ] } } } Судя по тому, что я видел, ошибка возникает, потому что отправляемое не проверяется в моем DTO, например, формат даты в части ГОД отправляет 5 алгоритмов, но он должен содержать только 4. Я хотел бы знать если можно обработать эту ошибку, оставить ее по умолчанию, потому что при ошибке в параметре запроса он выбрасывает это количество свойств в мой объект, если, возможно, можно было бы стандартизировать его, чтобы оно было просто < /п> ошибка: { сообщение: "текст" }
Я отправляю на свой сервер POST со следующими данными:
{ «идентификатор»: 0, «usuarioId»: 35, "titulo": "Тестирование", "описание": "", «доблесть»: 1.11, "vencimento": "111111-11-11" } Свойство истечения срока действия — это поле даты в DTO, которое является маршрутом POST.
публичный класс DespesaDTO { общественный ИНТ Id {получить; набор; } общественный ИНТ UsuarioId {получить; набор; } // Chave estrangeira для обычного пользователя общедоступная строка? Название {получить; набор; } общедоступная строка? Описание {получить; набор; } общественная двойная доблесть {получить; набор; } [Столбец(TypeName="Дата")] общественный DateTime Vencimento {получить; набор; } общественный DateTime CreatedAt {get; набор; } общественный DateTime UpdatedAt {get; набор; } } Мой контроллер выглядит следующим образом:
[HttpPost] общедоступная асинхронная задача Post (модель DespesaDTO) { пытаться { Despesa despesa = _mapper.Map(модель); Usuario usuario = await _unitOfWork.UsuarioRepository.GetByIdAsync(x => x.Id == model.UsuarioId); если (usuario == ноль) { return NotFound("Обычная информация не существует!"); } despesa.UsuarioId = usuario.Id; Console.WriteLine("TEST 2" + Despesa); _unitOfWork.DepesaRepository.Add(despesa); дождитесь _unitOfWork.CommitAsync(); Результат DespesaDTO = _mapper.Map(despesa); вернуть ОК (результат); } поймать (Исключение ex) { выдать новое исключение (ex.Message); } } Я получаю ошибку:
{ "заголовки": { "нормализованные имена": {}, «ленивое обновление»: ноль }, "статус": 400, "statusText": "Неверный запрос", "url": "http://localhost:5241/api/v1/despesa/", «ок»: ложь, "name": "HttpErrorResponse", "message": "Ответ об ошибке HTTP для http://localhost:5241/api/v1/despesa/: 400 неверный запрос", "ошибка": { "тип": "https://tools.ietf.org/html/rfc7231#section-6.5.1", "title": "Произошла одна или несколько ошибок проверки.", "статус": 400, "traceId": "00-239d1c05419ba94750eb48062e2509a6-91bebea55feef9cc-00", "ошибки": { "модель": [ «Поле модели обязательно». ], "$.vencimento": [ «Не удалось преобразовать значение JSON в System.DateTime. Путь: $.vencimento | LineNumber: 0 | BytePositionInLine: 102». ] } } } Судя по тому, что я видел, ошибка возникает, потому что отправляемое не проверяется в моем DTO, например, формат даты в части ГОД отправляет 5 алгоритмов, но он должен содержать только 4. Я хотел бы знать если можно обработать эту ошибку, оставить ее по умолчанию, потому что при ошибке в параметре запроса он выбрасывает это количество свойств в мой объект, если, возможно, можно было бы стандартизировать его, чтобы оно было просто < /п> ошибка: { сообщение: "текст" }
Мобильная версия