我有这个方法在/ api / values / {任意数字}触发。
public class ValuesController : Controller
{
[HttpPut("{id}")]
public void Put(int id, [FromBody]string value)
{
Console.WriteLine(id);
Program.GetCustomer(id);
}
}
Console.WriteLine(id)在返回url末尾的数字时返回值0。我不确定我是否只是误解了这是如何工作的?
答案 0 :(得分:0)
[Route("api/[controller]")]
public class ValuesController : Controller {
[HttpPut("{id:int}")] //Matches PUT api/values/5
public IActionResult Put(int id, [FromBody]string value) {
Console.WriteLine(id.ToString());
var customer = Program.GetCustomer(id);
return customer != null ? Ok(customer) : NotFound();
}
}
上述控制器和操作应与PUT请求匹配
http://<host>/api/values/5
其中id
应该映射到操作中的值5
,value
填充在请求正文中发送的内容。
路由约束{id:int}
可确保路由与URL段中输入的有效整数匹配。
如果删除了约束并输入了无效的整数,则id
的值将映射到其默认值0
,因为解析时的值不会解析为有效整数。