没有多个类的WebApi控制器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了没有多个类的WebApi控制器相关的知识,希望对你有一定的参考价值。
据我所知,路线图与格式
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”在实现中是相同的。唯一的区别是传递给我用于获取数据的函数的参数将从“文件”更改为“会议”。
答案
你的路线:
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>
也就是说,我不认为你想做的事情是有道理的。 如果您的控制器类似,请使用基类
以上是关于没有多个类的WebApi控制器的主要内容,如果未能解决你的问题,请参考以下文章
MVC & WebAPI“找到多个类型匹配名为...的控制器”