没有多个 类 的 WebApi 控制器

WebApi controller without multiple classes

据我了解,路由映射格式为

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

将 url“/api/file/1”映射到控制器 "FileController" 以及该控制器中包含的 GET 方法,该方法接受名为 "id" 的字符串输入。类似地,如果我有 url“/api/meeting/1”,它将映射到控制器 "MeetingController" 并且 GET 方法接受名为 "id".

的字符串输入

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

IE,我能以某种方式设置一个 "DefaultController",它接受 URL“/api/file/1”,并将其映射到一个名为 "GetData(string id)" 的方法吗?然后在那个方法中,我能以某种方式获得 "file" 部分吗?

我问这个的原因是因为上面描述的 "FileController" 和 "MeetingController" 在实现中是相同的。唯一的区别是传递给我用来获取数据的函数的参数将从 "file" 更改为 "meeting"。

您的路线:

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 将 return(如果您接受 xml)

string>files-1</string>

话虽如此,我认为您的尝试没有意义。
如果您的控制器相似,请使用基础 class