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禁用全局自动路由映射或者删除此配置以启用全局自动路由映射
 | |
|             });
 | |
|         }
 | |
| 
 | |
| 
 | |
| 
 | |
|     }
 | |
| }
 |