自定义模板路由不适用于没有ID的Get方法。 Web API

时间:2013-12-30 15:32:34

标签: c# asp.net asp.net-web-api routes

对testdata控制器的API调用仅适用于使用ID的REST调用。 我有一个自定义路由显示在下面,每次我调用http://localhost:56762/api/web/testdata/没有任何反应(我在IEnumerable<TestData> Get()设置断点,并且没有调用)。不管怎么说,如果我打电话给http://localhost:56762/api/web/testdata/1,我就会使用Id工作的get方法。

config.Routes.MapHttpRoute(
name: "TestData",
routeTemplate: "api/web/testdata/{id}",
defaults: new {controller="testdata", id = RouteParameter.Optional }
);

// GET api/web/testdata/5
public string Get(int id)
{
return "TEST DATA!";
}

public IEnumerable<TestData>  Get()
{
   ...

  return listTestData;
}

1 个答案:

答案 0 :(得分:-1)

testdata中需要routeTemplate括号,见下文:

    config.Routes.MapHttpRoute(
        name: "TestData",
        routeTemplate: "api/web/{controller}/{id}",
        defaults: new {id = RouteParameter.Optional }
        );

更新

如果您想为路线指定特定的控制器,请参阅以下内容:

        config.Routes.MapHttpRoute(
            name: "TestData",
            routeTemplate: "api/web/{controller}/{id}",
            defaults: new { controller = "testdata", id = RouteParameter.Optional }
            );

注意:您需要在Register方法中删除或注释掉默认Api路由。