private void ConfigureArea(ControllerModel controller, [CanBeNull] AbpControllerAssemblySetting configuration) { if (configuration == null) { return; } if (controller.RouteValues.ContainsKey("area")) { return; } controller.RouteValues["area"] = configuration.ModuleName; }
private void ConfigureSelector(ControllerModel controller, [CanBeNull] AbpControllerAssemblySetting configuration) { RemoveEmptySelectors(controller.Selectors); if (controller.Selectors.Any(selector => selector.AttributeRouteModel != null)) { return; } var moduleName = GetModuleNameOrDefault(controller.ControllerType.AsType()); foreach (var action in controller.Actions) { ConfigureSelector(moduleName, controller.ControllerName, action, configuration); } }
private void ConfigureRemoteService(ControllerModel controller, [CanBeNull] AbpControllerAssemblySetting configuration) { ConfigureApiExplorer(controller); ConfigureSelector(controller, configuration); ConfigureParameters(controller); }
private void AddAbpServiceSelector(string moduleName, string controllerName, ActionModel action, [CanBeNull] AbpControllerAssemblySetting configuration) { var abpServiceSelectorModel = new SelectorModel { AttributeRouteModel = CreateAbpServiceAttributeRouteModel(moduleName, controllerName, action) }; var verb = configuration?.UseConventionalHttpVerbs == true ? ProxyScriptingHelper.GetConventionalVerbForMethodName(action.ActionName) : ProxyScriptingHelper.DefaultHttpVerb; abpServiceSelectorModel.ActionConstraints.Add(new HttpMethodActionConstraint(new[] { verb })); action.Selectors.Add(abpServiceSelectorModel); }
private void ConfigureSelector(string moduleName, string controllerName, ActionModel action, [CanBeNull] AbpControllerAssemblySetting configuration) { RemoveEmptySelectors(action.Selectors); var remoteServiceAtt = ReflectionHelper.GetSingleAttributeOrDefault <RemoteServiceAttribute>(action.ActionMethod); if (remoteServiceAtt != null && !remoteServiceAtt.IsEnabledFor(action.ActionMethod)) { return; } if (!action.Selectors.Any()) { AddAbpServiceSelector(moduleName, controllerName, action, configuration); } else { NormalizeSelectorRoutes(moduleName, controllerName, action); } }
private void NormalizeSelectorRoutes(string moduleName, string controllerName, ActionModel action, [CanBeNull] AbpControllerAssemblySetting configuration) { foreach (var selector in action.Selectors) { if (!selector.ActionConstraints.OfType <HttpMethodActionConstraint>().Any()) { var httpMethod = SelectHttpMethod(action, configuration); selector.ActionConstraints.Add(new HttpMethodActionConstraint(new[] { httpMethod })); } if (selector.AttributeRouteModel == null) { selector.AttributeRouteModel = CreateAbpServiceAttributeRouteModel( moduleName, controllerName, action ); } } }
private string SelectHttpMethod(ActionModel action, AbpControllerAssemblySetting configuration) { return(configuration?.UseConventionalHttpVerbs == true ? ProxyScriptingHelper.GetConventionalVerbForMethodName(action.ActionName) : ProxyScriptingHelper.DefaultHttpVerb); }
private void AddAbpServiceSelector(string moduleName, string controllerName, ActionModel action, [CanBeNull] AbpControllerAssemblySetting configuration) { var abpServiceSelectorModel = new SelectorModel { AttributeRouteModel = CreateAbpServiceAttributeRouteModel(moduleName, controllerName, action) }; var httpMethod = SelectHttpMethod(action, configuration); abpServiceSelectorModel.ActionConstraints.Add(new HttpMethodActionConstraint(new[] { httpMethod })); action.Selectors.Add(abpServiceSelectorModel); }
private void ConfigureSelector(string moduleName, string controllerName, ActionModel action, [CanBeNull] AbpControllerAssemblySetting configuration) { RemoveEmptySelectors(action.Selectors); if (!action.Selectors.Any()) { AddAbpServiceSelector(moduleName, controllerName, action, configuration); } else { NormalizeSelectorRoutes(moduleName, controllerName, action); } }
private void AddAbpServiceSelector(string moduleName, string controllerName, ActionModel action, [CanBeNull] AbpControllerAssemblySetting configuration) { var abpServiceSelectorModel = new SelectorModel { AttributeRouteModel = CreateAbpServiceAttributeRouteModel(moduleName, controllerName, action) }; //计算当前api地址的动作约束 //如果没有设置,则使用post, //否则通过方法名称计算:根据方法名开头是否包含诸如Get,Post等字符串来确定 var verb = configuration?.UseConventionalHttpVerbs == true ? ProxyScriptingHelper.GetConventionalVerbForMethodName(action.ActionName) : ProxyScriptingHelper.DefaultHttpVerb; //添加动作约束 abpServiceSelectorModel.ActionConstraints.Add(new HttpMethodActionConstraint(new[] { verb })); //给action的选择器增加api路径选择器 action.Selectors.Add(abpServiceSelectorModel); }
private void ConfigureSelector(string moduleName, string controllerName, ActionModel action, [CanBeNull] AbpControllerAssemblySetting configuration) { RemoveEmptySelectors(action.Selectors); var remoteServiceAtt = ReflectionHelper.GetSingleAttributeOrDefault <RemoteServiceAttribute>(action.ActionMethod); //这里是说如果没打了这个标签,但是标签不适用于方法那么就不处理这个action了 if (remoteServiceAtt != null && !remoteServiceAtt.IsEnabledFor(action.ActionMethod)) { return; } if (!action.Selectors.Any()) { //当前action一个选择器都没有的时候,使用默认的选择器 AddAbpServiceSelector(moduleName, controllerName, action, configuration); } else { //否则遍历所有的选择器,将没有路由属性的选择器设置默认的选择器 NormalizeSelectorRoutes(moduleName, controllerName, action); } }