Если я отправляю тело JSON с неправильным типом (например, целое число, где строка ожидается в модели с Asp. Net Core), я получаю следующее сообщение:
"$. Name": ["Не удалось преобразовать значение JSON в System.String. Путь: $ .name | LineNumber: 1 | BytePositionInLine: 11." ]
Эта информация не очень понятна для случайного пользователя веб-интерфейса. Кроме того, если та же ошибка произойдет с enum, она также приведет к утечке информации о полностью определенном имени enum (включая пространство имен) и будет даже более бессмысленной для пользователя, чем System.String
.
. Есть ли лучший способ справиться с этим в WebApi? Например, чтобы изменить все сообщения на общий c Value was not of expected type
или что-то в этом роде?
Я знаю два возможных решения, но оба довольно громоздки:
- Все модели должны принять строку (хотя мы все равно получим строку со строкой, но она по крайней мере более или менее понятна) или объект (если это возможно). Тогда все проверки и сопоставления должны быть выполнены вручную
- Завершение конвертера для каждого типа, используемого в модели, и предоставление его в WebApi для использования
Я действительно надеюсь, что есть лучшее способ, который позволяет нам, например, «поймать» исключение из синтаксического анализатора или унаследовать от преобразователя по умолчанию и т. д. c.