没有多个类的WebApi控制器

问题描述 投票:1回答:1

据我所知,路线图与格式

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

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

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

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

我问这个的原因是因为上面描述的“FileController”和“MeetingController”在实现中是相同的。唯一的区别是传递给我用于获取数据的函数的参数将从“文件”更改为“会议”。

.net controller routes asp.net-web-api2
1个回答
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>

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

© www.soinside.com 2019 - 2024. All rights reserved.