From 32ea7191ee6d37ebc709477b66ece449057147dc Mon Sep 17 00:00:00 2001 From: zhangyousheng Date: Sun, 27 Aug 2023 17:36:10 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20Controller=20=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0api=E8=B7=AF=E7=94=B1=E5=89=8D=E5=9D=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dtos/User/GetUserDto.cs | 2 +- .../Controllers/UserController.cs | 2 +- .../MvcOptionsExtensions.cs | 45 +++++++++++++++++++ src/UserPointManagement.Web/Startup.cs | 3 +- 4 files changed, 49 insertions(+), 3 deletions(-) create mode 100644 src/UserPointManagement.Web/MvcOptionsExtensions.cs diff --git a/src/UserPointManagement.Model/Dtos/User/GetUserDto.cs b/src/UserPointManagement.Model/Dtos/User/GetUserDto.cs index f263408..b0c866c 100644 --- a/src/UserPointManagement.Model/Dtos/User/GetUserDto.cs +++ b/src/UserPointManagement.Model/Dtos/User/GetUserDto.cs @@ -2,5 +2,5 @@ public class GetUserDto : PageBase { - public string Keyword { get; set; } + public string? Keyword { get; set; } } \ No newline at end of file diff --git a/src/UserPointManagement.Web/Controllers/UserController.cs b/src/UserPointManagement.Web/Controllers/UserController.cs index 3d37dab..e6296f6 100644 --- a/src/UserPointManagement.Web/Controllers/UserController.cs +++ b/src/UserPointManagement.Web/Controllers/UserController.cs @@ -8,7 +8,7 @@ using UserPointManagement.Model.Entities; namespace UserPointManagement.Web.Controllers; [ApiController] -[Route("api/[controller]")] +[Route("[controller]")] public class UserController : ControllerBase { private readonly IUserService _userService; diff --git a/src/UserPointManagement.Web/MvcOptionsExtensions.cs b/src/UserPointManagement.Web/MvcOptionsExtensions.cs new file mode 100644 index 0000000..72e4d8e --- /dev/null +++ b/src/UserPointManagement.Web/MvcOptionsExtensions.cs @@ -0,0 +1,45 @@ +using System.Linq; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.ApplicationModels; +using Microsoft.AspNetCore.Mvc.Routing; + +namespace UserPointManagement.Web; + +public static class MvcOptionsExtensions +{ + private static void UseGeneralRoutePrefix(this MvcOptions opts, IRouteTemplateProvider routeAttribute) + { + opts.Conventions.Add(new RoutePrefixConvention(routeAttribute)); + } + + public static void UseGeneralRoutePrefix(this MvcOptions opts, string + prefix) + { + opts.UseGeneralRoutePrefix(new RouteAttribute(prefix)); + } +} + +public class RoutePrefixConvention : IApplicationModelConvention +{ + private readonly AttributeRouteModel _routePrefix; + + public RoutePrefixConvention(IRouteTemplateProvider route) + { + _routePrefix = new AttributeRouteModel(route); + } + + public void Apply(ApplicationModel application) + { + foreach (var selector in application.Controllers.SelectMany(c => c.Selectors)) + { + if (selector.AttributeRouteModel != null) + { + selector.AttributeRouteModel = AttributeRouteModel.CombineAttributeRouteModel(_routePrefix, selector.AttributeRouteModel); + } + else + { + selector.AttributeRouteModel = _routePrefix; + } + } + } +} \ No newline at end of file diff --git a/src/UserPointManagement.Web/Startup.cs b/src/UserPointManagement.Web/Startup.cs index c614071..6e09fd3 100644 --- a/src/UserPointManagement.Web/Startup.cs +++ b/src/UserPointManagement.Web/Startup.cs @@ -30,6 +30,7 @@ namespace UserPointManagement.Web { services.AddControllers(options => { + options.UseGeneralRoutePrefix("/api"); }); services.AddEndpointsApiExplorer(); services.AddSwaggerGen(options => @@ -92,7 +93,7 @@ namespace UserPointManagement.Web app.UseStaticFiles(); app.UseRouting(); - + app.UseEndpoints(endpoints => { endpoints.MapControllers();