C# 在.net webApi中删除不带id参数的请求
我有下面这样的.net核心WebApi。而且它工作得很好。但是,当我编写C# 在.net webApi中删除不带id参数的请求,c#,angular,asp.net-web-api,C#,Angular,Asp.net Web Api,我有下面这样的.net核心WebApi。而且它工作得很好。但是,当我编写[HttpDelete]而不是[HttpDelete({id}”)]时,它就不起作用了。原因是什么 我的网址: [ApiController] [路由(“api/[controller]/[action]”) 公共班级学生控制员:ControllerBase { //[HttpDelete]//这不起作用 [HttpDelete(“{id}”)]///这是有效的 公共异步任务DeleteStudent(int id) { 返
[HttpDelete]
而不是[HttpDelete({id}”)]
时,它就不起作用了。原因是什么
我的网址:
[ApiController]
[路由(“api/[controller]/[action]”)
公共班级学生控制员:ControllerBase
{
//[HttpDelete]//这不起作用
[HttpDelete(“{id}”)]///这是有效的
公共异步任务DeleteStudent(int id)
{
返回等待学生服务。删除学生(id);
}
}
你必须告诉路由器你的api签名。。现在,通过将[HttpDelete({id}”)]
替换为[HttpDelete]
您的签名将成为api/[controller]/[action]
,因此您的路由器将忽略该签名之后的任何内容
如果希望将自定义路由保留为
[HttpDelete]
,则可以定义自定义路由,其中还将指定id作为参数。如果不使用{id}
路由模板参数,则填充该值的唯一其他方法是通过查询字符串
http://localhost:5004/api/Student/DeleteStudent?id=23
路由表将querystring参数与action参数匹配以进行匹配
无论哪种方式,都需要提供
id
,以知道调用哪个操作和删除哪个记录。MVC如何知道从何处获取id?为什么要删除路由模板?我只发送一个参数。我想,它可以在这个网站上知道@PanagiotisKanavosForexample@PanagiotisKanavos他没有使用id参数。没有id route template参数,只有通过查询字符串(即http://localhost:5004/api/Student/DeleteStudent?id=23
)。无论哪种方式,都需要提供id来知道删除哪个记录谢谢@Nkosi。我想,这就是我要找的。成功了。你能写下答案吗?我会记下答案。谢谢@MichelHanna。恩科西的回答解决了我的问题。
http://localhost:5004/api/Student/DeleteStudent?id=23