|
|
|
@ -4,6 +4,7 @@ using System.Reflection; |
|
|
|
using JetBrains.Annotations; |
|
|
|
using Microsoft.AspNetCore.Mvc.ApplicationModels; |
|
|
|
using Microsoft.Extensions.Options; |
|
|
|
using Volo.Abp.Application.Services; |
|
|
|
using Volo.Abp.DependencyInjection; |
|
|
|
using Volo.Abp.Http; |
|
|
|
using Volo.Abp.Reflection; |
|
|
|
@ -26,9 +27,11 @@ public class ConventionalRouteBuilder : IConventionalRouteBuilder, ITransientDep |
|
|
|
string httpMethod, |
|
|
|
[CanBeNull] ConventionalControllerSetting configuration) |
|
|
|
{ |
|
|
|
var controllerNameInUrl = NormalizeUrlControllerName(rootPath, controllerName, action, httpMethod, configuration); |
|
|
|
var apiRoutePrefix = GetApiRoutePrefix(action, configuration); |
|
|
|
var controllerNameInUrl = |
|
|
|
NormalizeUrlControllerName(rootPath, controllerName, action, httpMethod, configuration); |
|
|
|
|
|
|
|
var url = $"api/{rootPath}/{NormalizeControllerNameCase(controllerNameInUrl, configuration)}"; |
|
|
|
var url = $"{apiRoutePrefix}/{rootPath}/{NormalizeControllerNameCase(controllerNameInUrl, configuration)}"; |
|
|
|
|
|
|
|
//Add {id} path if needed
|
|
|
|
var idParameterModel = action.Parameters.FirstOrDefault(p => p.ParameterName == "id"); |
|
|
|
@ -69,6 +72,21 @@ public class ConventionalRouteBuilder : IConventionalRouteBuilder, ITransientDep |
|
|
|
return url; |
|
|
|
} |
|
|
|
|
|
|
|
protected virtual string GetApiRoutePrefix(ActionModel actionModel, ConventionalControllerSetting configuration) |
|
|
|
{ |
|
|
|
if (!configuration.ApiRoutePrefix.IsNullOrWhiteSpace()) |
|
|
|
{ |
|
|
|
return configuration.ApiRoutePrefix; |
|
|
|
} |
|
|
|
|
|
|
|
if (actionModel.Controller.ControllerType.IsDefined(typeof(IntegrationServiceAttribute), true)) |
|
|
|
{ |
|
|
|
return "integration-api"; |
|
|
|
} |
|
|
|
|
|
|
|
return "api"; |
|
|
|
} |
|
|
|
|
|
|
|
protected virtual string NormalizeUrlActionName(string rootPath, string controllerName, ActionModel action, |
|
|
|
string httpMethod, [CanBeNull] ConventionalControllerSetting configuration) |
|
|
|
{ |
|
|
|
@ -108,7 +126,8 @@ public class ConventionalRouteBuilder : IConventionalRouteBuilder, ITransientDep |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
protected virtual string NormalizeControllerNameCase(string controllerName, [CanBeNull] ConventionalControllerSetting configuration) |
|
|
|
protected virtual string NormalizeControllerNameCase(string controllerName, |
|
|
|
[CanBeNull] ConventionalControllerSetting configuration) |
|
|
|
{ |
|
|
|
if (configuration?.UseV3UrlStyle ?? Options.UseV3UrlStyle) |
|
|
|
{ |
|
|
|
@ -120,7 +139,8 @@ public class ConventionalRouteBuilder : IConventionalRouteBuilder, ITransientDep |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
protected virtual string NormalizeActionNameCase(string actionName, [CanBeNull] ConventionalControllerSetting configuration) |
|
|
|
protected virtual string NormalizeActionNameCase(string actionName, |
|
|
|
[CanBeNull] ConventionalControllerSetting configuration) |
|
|
|
{ |
|
|
|
if (configuration?.UseV3UrlStyle ?? Options.UseV3UrlStyle) |
|
|
|
{ |
|
|
|
@ -132,13 +152,15 @@ public class ConventionalRouteBuilder : IConventionalRouteBuilder, ITransientDep |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
protected virtual string NormalizeIdPropertyNameCase(PropertyInfo property, [CanBeNull] ConventionalControllerSetting configuration) |
|
|
|
protected virtual string NormalizeIdPropertyNameCase(PropertyInfo property, |
|
|
|
[CanBeNull] ConventionalControllerSetting configuration) |
|
|
|
{ |
|
|
|
return property.Name; |
|
|
|
} |
|
|
|
|
|
|
|
protected virtual string NormalizeSecondaryIdNameCase(ParameterModel secondaryId, [CanBeNull] ConventionalControllerSetting configuration) |
|
|
|
protected virtual string NormalizeSecondaryIdNameCase(ParameterModel secondaryId, |
|
|
|
[CanBeNull] ConventionalControllerSetting configuration) |
|
|
|
{ |
|
|
|
return secondaryId.ParameterName; |
|
|
|
} |
|
|
|
} |
|
|
|
} |