public void Invalid_ServiceWithAction_Names() { Assert.Equal(false, DynamicApiServiceNameHelper.IsValidServiceNameWithAction("")); Assert.Equal(false, DynamicApiServiceNameHelper.IsValidServiceNameWithAction("task")); Assert.Equal(false, DynamicApiServiceNameHelper.IsValidServiceNameWithAction("task_service")); Assert.Equal(false, DynamicApiServiceNameHelper.IsValidServiceNameWithAction("task_service/create")); }
/// <summary> /// This method is called by Web API system to select the controller for this request. /// </summary> /// <param name="request">Request object</param> /// <returns>The controller to be used</returns> public override HttpControllerDescriptor SelectController(HttpRequestMessage request) { //Get request and route data if (request == null) { return(base.SelectController(null)); } var routeData = request.GetRouteData(); if (routeData == null) { return(base.SelectController(request)); } //Get serviceNameWithAction from route string serviceNameWithAction; if (!routeData.Values.TryGetValue("serviceNameWithAction", out serviceNameWithAction)) { return(base.SelectController(request)); } //Normalize serviceNameWithAction if (serviceNameWithAction.EndsWith("/")) { serviceNameWithAction = serviceNameWithAction.Substring(0, serviceNameWithAction.Length - 1); routeData.Values["serviceNameWithAction"] = serviceNameWithAction; } //Get the dynamic controller var hasActionName = false; var controllerInfo = _dynamicApiControllerManager.FindOrNull(serviceNameWithAction); if (controllerInfo == null) { if (!DynamicApiServiceNameHelper.IsValidServiceNameWithAction(serviceNameWithAction)) { return(base.SelectController(request)); } var serviceName = DynamicApiServiceNameHelper.GetServiceNameInServiceNameWithAction(serviceNameWithAction); controllerInfo = _dynamicApiControllerManager.FindOrNull(serviceName); if (controllerInfo == null) { return(base.SelectController(request)); } hasActionName = true; } //Create the controller descriptor var controllerDescriptor = new DynamicHttpControllerDescriptor(_configuration, controllerInfo); controllerDescriptor.Properties["__AbpDynamicApiControllerInfo"] = controllerInfo; controllerDescriptor.Properties["__AbpDynamicApiHasActionName"] = hasActionName; return(controllerDescriptor); }
public void Valid_Service_WithAction_Names() { Assert.Equal(true, DynamicApiServiceNameHelper.IsValidServiceNameWithAction("taskever/task/create")); Assert.Equal(true, DynamicApiServiceNameHelper.IsValidServiceNameWithAction("taskever/tasks/task/update")); Assert.Equal(true, DynamicApiServiceNameHelper.IsValidServiceNameWithAction("taskever/taskService/delete")); Assert.Equal(true, DynamicApiServiceNameHelper.IsValidServiceNameWithAction("taskever/tasks/taskService/getAllTasks")); Assert.Equal(true, DynamicApiServiceNameHelper.IsValidServiceNameWithAction("taskever/tasks/task_service/deleteTask")); Assert.Equal(true, DynamicApiServiceNameHelper.IsValidServiceNameWithAction("taskever/myNameSpace1/MyNameSpace2/mynamespace3/myserviceName/CreateNew")); Assert.Equal(true, DynamicApiServiceNameHelper.IsValidServiceNameWithAction("taskever/myName_Space1/MyName_Space2/mynamespace_3/myservice/test_action_Name")); }
/// <summary> /// 该方法将被系统调用,根据请求选择合适的Controller /// </summary> /// <param name="request"></param> /// <returns></returns> public override HttpControllerDescriptor SelectController(HttpRequestMessage request) { if (null == request) { return(base.SelectController(null)); } var routeData = request.GetRouteData(); if (null == routeData) { return(base.SelectController(request)); } string serviceNameWithAction; if (!routeData.Values.TryGetValue("serviceNameWithAction", out serviceNameWithAction)) { return(base.SelectController(request)); } if (Convert.ToString(serviceNameWithAction).EndsWith("/")) { serviceNameWithAction = serviceNameWithAction.Substring(0, serviceNameWithAction.Length - 1); routeData.Values["serviceNameWithAction"] = serviceNameWithAction; } var hasActionName = false; var controllerInfo = _dynamicApiControllerManager.FindOrNull(serviceNameWithAction); if (null == controllerInfo) { if (!DynamicApiServiceNameHelper.IsValidServiceNameWithAction(serviceNameWithAction)) { return(base.SelectController(request)); } var serviceName = DynamicApiServiceNameHelper.GetServiceNameInServiceNameWithAction(serviceNameWithAction); controllerInfo = _dynamicApiControllerManager.FindOrNull(serviceName); if (null == controllerInfo) { return(base.SelectController(request)); } hasActionName = true; } // 创建并返回Controller描述器 var controllerDescriptor = new DynamicHttpControllerDescriptor(_configuration, controllerInfo); controllerDescriptor.Properties["__MSDynamicApiControllerInfo"] = controllerInfo; controllerDescriptor.Properties["__MSDynamicApiHasActionName"] = hasActionName; return(controllerDescriptor); }
/// <summary> /// This method is called by Web API system to select the controller for this request. /// </summary> /// <param name="request">Request object</param> /// <returns>The controller to be used</returns> public override HttpControllerDescriptor SelectController(HttpRequestMessage request) { if (request != null) { var routeData = request.GetRouteData(); if (routeData != null) { string serviceNameWithAction; if (routeData.Values.TryGetValue("serviceNameWithAction", out serviceNameWithAction) && DynamicApiServiceNameHelper.IsValidServiceNameWithAction(serviceNameWithAction)) { var serviceName = DynamicApiServiceNameHelper.GetServiceNameInServiceNameWithAction(serviceNameWithAction); var controllerInfo = DynamicApiControllerManager.FindOrNull(serviceName); if (controllerInfo != null) { var controllerDescriptor = new DynamicHttpControllerDescriptor(_configuration, controllerInfo.ServiceName, controllerInfo.Type, controllerInfo.Filters); controllerDescriptor.Properties["__AbpDynamicApiControllerInfo"] = controllerInfo; return(controllerDescriptor); } } } } return(base.SelectController(request)); }