在使用Swagger WebApi文档框架时,一个Controll中写多个Post接口时,在MVC4中会提示无法识别的多个post请求,原因是WebApiConfig中默认路由配置中是没有配置{action}引起的。
【在MVC5中没有此问题,原因是MVC5有Route[" "]特性,MVC4中不支持】
1.修改WebApiConfig文件
//默认配置
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
//修改后配置
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
2.API接口示例
[HttpPost]
[ActionName("UserInfo")]
public string UserInfo(string name)
{
return name;
}
3.MVC5中可以不修改默认配置文件,而使用Route特性来指定
[Route("api/Account/HideApi")]
[HttpGet]
public HttpResponseMessage HideApi(string value)
{
return Request.CreateResponse(HttpStatusCode.OK, new { errorCode = "0", value = value });
}