只有一个Get适用于我的API

时间:2015-12-30 20:32:50

标签: asp.net rest get routes asp.net-web-api2

我有两个得分:

    [HttpGet]
    [Route("api/users")]
    public HttpResponseMessage GetSpecificUser(int id)
    {
        var foundUser = Users.FirstOrDefault(user => user.ID == id);

        return Json(foundUser).ExecuteAsync(CancellationToken.None).Result;
    }

    [HttpGet]
    [Route("api/users")]
    public HttpResponseMessage GetAllUsers()
    {
        return Json(Users).ExecuteAsync(CancellationToken.None).Result;
    }

只有GetAllUsers似乎有效。 (通过http://localhost:61800/api/users

访问

尝试按http://localhost:61800/api/users/1

访问GetSpecificUser

我在这两种方法中都设置了断点,但只有GetAllUsers被击中。

我使用默认的RouteConfig

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}

为什么不具体的Get工作?

1 个答案:

答案 0 :(得分:2)

确保在路由定义中包含{id}令牌:

[Route("api/users/{id}")]
public HttpResponseMessage GetSpecificUser(int id)