ASP.NET Core Web API:为什么需要在Get请求中使用ModelState验证?
问题描述:
VS 2015年自动生成以下代码:ASP.NET Core Web API:为什么需要在Get请求中使用ModelState验证?
// GET: api/Companies/5
[HttpGet("{id}")]
public async Task<IActionResult> GetCompany([FromRoute] int id)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
Company company = await _context.Companies.SingleOrDefaultAsync(m => m.Id == id);
if (company == null)
{
return NotFound();
}
return Ok(company);
}
什么是这里的ModelState验证的意义呢?
答
我假设你使用了Web Api模板。由于您没有从“空白”模板开始,所以VS生成的代码是Microsoft团队认为的“良好实践”。
问题是,如果您希望某个字段包含电子邮件,需要另一个字段等等,您可能会用数据注释标记它们。现在,在你的方法被执行之前还有一些额外的检查(对于一个简单的int来说是不必要的,但这意味着你可能会改变参数)。有关更多信息,请参阅this文章。
如果您发现这些添加不必要,您可以随时从Empty模板启动项目。