0

我想知道如何在 dot net core 中指定路由。例如,我有一个 get 方法,它获取 1 个参数(id),并返回用户。此方法可通过此链接 (api/user/1) 获得。所以,问题是如何为这个链接创建一个方法——“api/user/1/profile”,以便它获取 ID 并返回与该 ID 相关的内容。是否有必要制作 2 个 get 方法,或者只是将它们分开并指定路由?

4

2 回答 2

2

使用基于属性的路由,可以这样做。

[HttpGet("{id:int}")]
public async Task<IActionResult> GetUserById(int id) {}

[HttpGet("{id:int}/profile")]
public async Task<IActionResult> GetUserProfileById(int id) {}

有关路由的更多信息可以在此链接中找到。

https://docs.asp.net/en/latest/fundamentals/routing.html

于 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 回答