Я создаю POST API в .NET. У меня следующий класс.
public class Item
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
Ниже приведен метод контроллера.
1-й подход: -
public IHttpActionResult Post([FromBody]Item item)
{
// some code
return Ok();
}
2-й подход: -
public IHttpActionResult Post()
{
Item item = null;
var reqContent = Request.Content.ReadAsStringAsync().Result;
if (reqContent != null)
{
item = JsonConvert.DeserializeObject<Item>(reqContent);
}
// some code
return Ok();
}
Проблема заключается в том, что когда я отправляю age=''
или age=null
в запросе, при первом подходе требуется item.Age=0
, но при втором подходе выдается исключение Error converting value {null} to type 'System.Int32'.
Почему это происходит, я не могу понять.
Я предполагаю, что в FromBody
обработка нулевого значения для такого типа диалога является дескриптором, но в JsonConvert.DeserializeObject
она не обрабатывается.
Это правильно? Или есть какая-то другая причина для верхнего поведения.