我正在以下站点上扩展示例:https://docs.asp.net/en/latest/tutorials/first-web-api.html
它们有一个ToDo apis:/api/todo
和/api/todo/{id}
。
我想把它扩展到ToDoGroups /api/ToDoGroup
。
在ToDoGroup下,我想通过以下方式达到一个ToDo:/api/ToDoGroup/{id}/ToDo/{id}
。
如何使它指向相同的控制器操作?例如,下面的操作还将有另一条类似于[HttpGet("ToDoGroup/{ToDoGroupid}/ToDo/{ToDoid}", Name = "GetTodo")]
的路由
[HttpGet("{id}", Name = "GetTodo")]
public IActionResult GetById(string id)
{
var item = TodoItems.Find(id);
if (item == null)
{
return NotFound();
}
return new ObjectResult(item);
}
发布于 2016-10-26 18:55:50
首先更改控制器的路由前缀:
[Route("api/todogroup/{groupId:int}")]
public class TodoController : Controller
然后改变你的行动路线:
[HttpGet("todo/{id}", Name = "GetTodo")]
public IActionResult GetById(int groupId, string id)
编辑:获得这两条路由,您可以这样做:
[Route("api")]
public class TodoController : Controller
[HttpGet("todo/{id}", Name = "GetTodo")]//api/todo/43
public IActionResult GetById(string id)
[HttpGet("todogroup/{groupdId:int}/todo/{id}", Name = "GetGroupTodo")]//api/todogroup/100/todo/43
public IActionResult GetById(int groupId, string id)
Asp.Net Web有一种消除路由前缀(在控制器上指定的路由)的方法,但我无法在Asp.Net核心中找到等效的路由前缀。
https://stackoverflow.com/questions/40269706
复制相似问题