据我所知,路线图的格式为
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"到"会议"。
答案 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>
那就是说,我不认为你想要做的事情是有道理的 如果您的控制器类似,请使用基类