dotnet核心从url的末尾获取id

时间:2017-07-15 22:12:48

标签: .net asp.net-web-api asp.net-core

我有这个方法在/ 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。我不确定我是否只是误解了这是如何工作的?

1 个答案:

答案 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应该映射到操作中的值5value填充在请求正文中发送的内容。

路由约束{id:int}可确保路由与URL段中输入的有效整数匹配。

如果删除了约束并输入了无效的整数,则id的值将映射到其默认值0,因为解析时的值不会解析为有效整数。