在使用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 }); }