我想知道如何在 dot net core 中指定路由。例如,我有一个 get 方法,它获取 1 个参数(id),并返回用户。此方法可通过此链接 (api/user/1) 获得。所以,问题是如何为这个链接创建一个方法——“api/user/1/profile”,以便它获取 ID 并返回与该 ID 相关的内容。是否有必要制作 2 个 get 方法,或者只是将它们分开并指定路由?
问问题
130 次
2 回答
2
使用基于属性的路由,可以这样做。
[HttpGet("{id:int}")]
public async Task<IActionResult> GetUserById(int id) {}
[HttpGet("{id:int}/profile")]
public async Task<IActionResult> GetUserProfileById(int id) {}
有关路由的更多信息可以在此链接中找到。
于 2016-11-09T09:29:14.953 回答
0
如果您没有更改默认路由:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
您可以使用以下内容创建用户控制器:
public async Task<IActionResult> Profile(int? id)
{
if (id == null)
{
// Get the id
}
var profile = await _context.Profile
.SingleOrDefaultAsync(m => m.Id == id);
if (profile == null)
{
return NotFound();
}
return View(profile);
}
然后它将被映射到“/User/Profile/{id}”
显然,您可以随心所欲地获取配置文件的数据,我只是使用了一个 EFCore 示例。
于 2017-07-26T22:33:11.440 回答