mvc4 webapi里一个controller对应多个post方法
//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 } );
public class UserLoginController : BaseApiController { // POST api/UserLogin/ApiToken [HttpPost] [AllowAnonymous] [ActionName("ApiToken")] public ApiTokenResponeModel ApiToken(ApiTokenRequestModel model) { var respone = new ApiTokenResponeModel(); try { // 请求头校验 respone.issuccess = SignHelper.Check(Request.Headers); // 登录校验 var appKey = Request.Headers.GetValues("appKey").First(); respone.registered = Registered(model, appKey); // 生成jwt if(respone.registered) respone.access_token = TokenHelper.GenerateToken(model.businesslicenseNo, 5); } catch (ShowInfoException e) { respone = new ApiTokenResponeModel() { msg = e.Message }; } catch (Exception ex) { respone = new ApiTokenResponeModel() { msg = "服务器异常,请联系中智客服" }; BusinessEngine.Logger.Error(ex); } return respone; } // POST api/UserLogin/Register [HttpPost] [AllowAnonymous] [ActionName("Register")] public RegisterResponeModel Register(RegisterRequestModel model) { var respone = new RegisterResponeModel(); try { // 请求头校验 SignHelper.Check(Request.Headers); // 注册 var appKey = Request.Headers.GetValues("appKey").First(); Register(model, appKey); // 生成jwt respone.access_token = TokenHelper.GenerateToken(model.businesslicenseNo, 5); respone.issuccess = true; } catch (ShowInfoException e) { respone.msg = e.Message; } catch (Exception ex) { respone.msg = "服务器异常,请联系中智客服"; BusinessEngine.Logger.Error(ex); } return respone; } /// <summary> /// 是否注册 /// </summary> /// <param name="model"></param> /// <param name="appKey"></param> /// <returns></returns> private bool Registered(ApiTokenRequestModel model, string appKey) { var paramData = new BaseReqParam(); paramData.ExtraData.Add("AppKey", appKey); paramData.ExtraData.Add("BusinesslicenseNo", model.businesslicenseNo); var resp = ServiceCommunicator.AnonymousExecuteOperation<BaseResponse>("PotentialCustomer.Registered", paramData); return resp.ExtraData.GetBool("Registered"); } /// <summary> /// 注册 /// </summary> /// <returns></returns> private bool Register(RegisterRequestModel model, string appKey) { var paramData = new BaseReqParam(); paramData.ExtraData.Add("AppKey", appKey); paramData.ExtraData.Add("BusinesslicenseNo", model.businesslicenseNo); paramData.ExtraData.Add("CompanyName", model.company); paramData.ExtraData.Add("Nature", model.nature); paramData.ExtraData.Add("Industry", model.industry); paramData.ExtraData.Add("Linkman", model.linkman); paramData.ExtraData.Add("Phone", model.phone); paramData.ExtraData.Add("Email", model.email); var resp = ServiceCommunicator.AnonymousExecuteOperation<BaseResponse>("PotentialCustomer.Register", paramData); return resp.ExtraData.GetBool("Registered"); } }
此处的疑问是为什么api/{controller}/{id}不注释掉,即使名称name不都是DefaultApi的,也会报500服务器错误。
如果两种路由都要用的话,怎么办?

浙公网安备 33010602011771号