在Controller中给出此方法
[HttpGet("{id}")]
public string Get(int id)
{
return "value";
}
这样的请求是成功的! http://localhost:53351/api/values/的 ABC
为什么?
恕我直言,这应该是错误请求,因为id不是数字(它是“abc”)。相反,我得到一个0(零)作为id
参数。
MOREOVER =>
在这样的方法中也会出现类似的问题:
[HttpGet("{id}")]
public string Get(int id, [FromQuery]QueryObject queryObj)
{
return "value";
}
public class QueryObject
{
public int Number { get; set; }
public string String { get; set; }
}
在这样的请求中
http://localhost:53351/api/values/1?String=hello&Number=的 ABC
解析并放置为queryObj
的对象将其number属性设置为0(零)。
这会使无效数据通过管道!我们可以避免这种行为吗?
答案 0 :(得分:2)
您可以限制参数的类型,如下所示:
[HttpGet("{id:int}")]
来自docs
第二部分
您需要将[FromQuery]
属性添加到模型属性
public class QueryObject
{
[FromQuery(Name = "Number")]
public int Number { get; set; }
[FromQuery(Name = "String")]
public string String { get; set; }
}