没有多个类的WebApi控制器

时间:2017-12-21 20:36:23

标签: .net controller routes asp.net-web-api2

据我所知,路线图的格式为

            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }

映射网址" / api / file / 1"到控制器" FileController"并且该控制器中包含的GET方法接受名为" id"的字符串输入。同样,如果我有网址" / api / meeting / 1",它会映射到控制器" MeetingController"并且GET方法接受名为" id"。

的字符串输入

是否可以将上述两者都映射到同一个控制器?

IE,我可以以某种方式设置一个" DefaultController",它接受URL" / api / file / 1",并将其映射到名为" GetData的方法(字符串ID)"?然后在该方法中,我可以以某种方式获取"文件"一部分?

我之所以这么说是因为" FileController"和#34; MeetingController"在实施中,上述描述将是相同的。唯一的区别是传递给我用来获取数据的函数的参数会改变为" file"到"会议"。

1 个答案:

答案 0 :(得分:1)

您的路线:

config.Routes.MapHttpRoute(
      name: "DefaultApi",
      routeTemplate: "api/{data}/{id}",
      defaults: new {
                      id = RouteParameter.Optional, 
                      controller = "Generic",
                      action = "GenericAction" 
                   }
);

你的控制器:

public class GenericController : ApiController
{
    [HttpGet]
    public string GenericAction(string data, int? id)
    {
        return data + "-" + id.ToString();
    }
}

此    http://localhost:53221/api/files/1将返回(如果您接受xml)

string>files-1</string>

那就是说,我不认为你想要做的事情是有道理的 如果您的控制器类似,请使用基类