【问题标题】:dotnet core getting id from end of urldotnet core 从 url 末尾获取 id
【发布时间】:2017-07-15 22:12:47
【问题描述】:

我有这个在 /api/values/{any number} 处触发的方法。

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

【问题讨论】:

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


    【解决方案1】:
    [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,因为解析时的值不会解析为有效整数。

    【讨论】:

    • 啊,好吧,所以它实际上只匹配到 5?我以为这只是一个示例数字。
    • @Matt 5 只是一个示例数字。它将匹配任何有效的整数。
    猜你喜欢
    • 1970-01-01
    • 2019-06-27
    • 2016-02-09
    • 1970-01-01
    • 1970-01-01
    • 2017-06-15
    • 2012-05-10
    • 2012-10-03
    • 1970-01-01
    相关资源
    最近更新 更多