Мы используем .NET Web API
с SQL Server
.Похоже, что ошибки по умолчанию, которые я получаю от API, различаются в зависимости от типа данных столбца.На переднем крае у нас есть таблица, которую заполняют пользователи, которая заполняет вышеупомянутую таблицу базы данных.Если я отправляю запись с пустыми значениями для всех этих обязательных полей, это то, что API возвращает в консоли (на вкладке «Сеть» -> «Ответ»):
{
"Message": "The request is invalid.",
"ModelState": {
"myTable": [
"Required property 'columnInt1' not found in JSON. Path '', line x, position xxx.",
"Required property 'columnInt2' not found in JSON. Path '', line x, position xxx.",
"Required property 'columnInt3' not found in JSON. Path '', line x, position xxx.",
"Required property 'columnDecimal' not found in JSON. Path '', line x, position xxx."
],
"myTable.columnString1": [
"The columnString1 field is required."
],
],
"myTable.columnString2": [
"The columnString2 field is required."
]
}
}
Обратите внимание наразличные ответы об ошибках в зависимости от типа данных.Если я изменю один из столбцов varchar на тип данных int или decimal, его ответ об ошибке изменится, чтобы соответствовать сообщению о том, что остальные столбцы типа int / decimal имеют ("Required property 'columnInt1' not found in JSON. Path '', line x, position xxx")
.
. Я бы предпочел, чтобы все ошибки имелиответ, что два столбца varchar имеют ("The stringColumn1 field is required."
и т. д.). Есть ли способ изменить это поведение по умолчанию и почему это так?
Ниже приведен пример дизайна нашей таблицы:
Column Name: Data Type: Allow Nulls:
columnInt1 int no
columnInt2 int no
columnInt3 int no
columnDecimal decimal(5, 2) no
stringColumn1 varchar(4) no
stringColumn2 varchar(5) no
Наша модель API для этой таблицы выглядит следующим образом:
[Required]
public int columnInt1 { get; set; }
[Required]
public int columnInt2 { get; set; }
[Required]
public int columnInt3 { get; set; }
[Required]
[Precision(4,2)]
public decimal columnDecimal { get; set; }
[Required]
[StringLength(4)]
public string columnString1 { get; set; }
[Required]
[StringLength(5)]
public string columnString2 { get; set; }