如何设置路由以支持此功能?
如果我切换路线,那么GetSomeStuff可以工作,但是/ api / values不起作用。如何配置路由以使它们都工作?
示例方法:
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
public string Get(int id)
{
return "value";
}
// POST api/values
public void Post([FromBody]string value)
{
}
// PUT api/values/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/values/5
public void Delete(int id)
{
}
// GET api/values/5
[HttpGet]
public string GetSomeStuff(int id)
{
return "stuff";
}
路线设置如下:
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
答案 0 :(得分:0)
如何而不是:
GET /api/values/GetSomeStuff/1
你设计了这样的网址:
GET /api/someStuff/1
现在,您可以对其进行SomeStuffController
和Get(int id)
操作。
答案 1 :(得分:0)
您可以尝试以下路线:
config.Routes.MapHttpRoute(
name: "DefaultController",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional },
constraints: new { id = @"^[0-9]*$" }
);
config.Routes.MapHttpRoute(
name: "DefaultController2",
routeTemplate: "api/{controller}/{action}/{id2}"
);
并将您的操作方法更改为:
[HttpGet]
public string GetSomeStuff(int id2)
{
return "stuff";
}