63 lines
2.9 KiB
C#
63 lines
2.9 KiB
C#
using IRaCIS.Core.Application.BusinessFilter;
|
|
using IRaCIS.Core.Application.Service.BusinessFilter;
|
|
using Microsoft.AspNetCore.Builder;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Panda.DynamicWebApi;
|
|
using System.Collections.Generic;
|
|
|
|
namespace IRaCIS.Core.API
|
|
{
|
|
public static class WebApiSetup
|
|
{
|
|
//20210910 避免冗余的控制器层代码编写,仅仅包了一层前后台定义的格式 这里采用动态webAPi+IResultFilter 替代大部分情况
|
|
public static void AddDynamicWebApiSetup(this IServiceCollection services)
|
|
{
|
|
//动态webApi 目前存在的唯一小坑是生成api上服务上的动态代理AOP失效 间接掉用不影响
|
|
services.AddDynamicWebApi(dynamicWebApiOption =>
|
|
{
|
|
//默认是 api
|
|
dynamicWebApiOption.DefaultApiPrefix = "";
|
|
//首字母小写
|
|
dynamicWebApiOption.GetRestFulActionName = (actionName) => char.ToLower(actionName[0]) + actionName.Substring(1);
|
|
//删除 Service后缀
|
|
dynamicWebApiOption.RemoveControllerPostfixes.Add("Service");
|
|
|
|
});
|
|
}
|
|
|
|
public static void AddMasaMinimalAPiSetUp(this IServiceCollection services)
|
|
{
|
|
services.AddMasaMinimalAPIs(options =>
|
|
{
|
|
options.Prefix = "";//自定义前缀 默认是api
|
|
options.Version = ""; //默认是V1
|
|
options.AutoAppendId = false; //路由是否自动附加参数Id 默认是true
|
|
options.PluralizeServiceName = false; //服务名称是否启用复数
|
|
|
|
//options.Assemblies = new List<Assembly>() { typeof(UserSiteSurveySubmitedEventConsumer).Assembly };
|
|
|
|
options.GetPrefixes = new List<string> { "Get", "Select", "Find" };
|
|
options.PostPrefixes = new List<string> { "Post", "Add", "Create", "List" };
|
|
options.PutPrefixes = new List<string> { "Put", "Update" };
|
|
options.DeletePrefixes = new List<string> { "Delete", "Remove" };
|
|
|
|
options.RouteHandlerBuilder = t => {
|
|
t.RequireAuthorization()
|
|
.AddEndpointFilter<LimitUserRequestAuthorizationEndpointFilter>()
|
|
.AddEndpointFilter<TrialGlobalLimitEndpointFilter>()
|
|
//.AddEndpointFilter<ModelValidationEndpointFilter>()
|
|
.AddEndpointFilter<UnifiedApiResultEndpointFilter>()
|
|
.WithGroupName("Institution").DisableAntiforgery();
|
|
};
|
|
options.MapHttpMethodsForUnmatched = new string[] { "Post" };
|
|
options.DisableTrimMethodPrefix = true; //禁用去除方法前缀
|
|
options.DisableAutoMapRoute = false;//可通过配置true禁用全局自动路由映射或者删除此配置以启用全局自动路由映射
|
|
});
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|