|
|
|
@ -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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|