From 3ff8983bd06d29bddcdd50168f75de092c770711 Mon Sep 17 00:00:00 2001
From: wanggaofeng <15601716045@163.com>
Date: Tue, 23 Jul 2024 20:08:00 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../WebApiConfigExtensions.cs | 2 +-
HttpClientStudy.Config/WebApiConfigManager.cs | 2 +-
.../ConfigTest/WebApiConfigTest.cs | 2 +-
.../Controllers/ConfigController.cs | 39 ++++++++++
.../HttpClientStudy.WebApp.csproj | 2 +-
.../Controllers/CallApiController.cs | 17 +++++
.../Controllers/ManagerController.cs | 5 ++
.../HttpClientStudy.WebClient.csproj | 2 +
HttpClientStudy.WebClient/Program.cs | 75 +++++++++++++++++--
9 files changed, 137 insertions(+), 9 deletions(-)
create mode 100644 HttpClientStudy.WebApp/Controllers/ConfigController.cs
diff --git a/HttpClientStudy.Config/WebApiConfigExtensions.cs b/HttpClientStudy.Config/WebApiConfigExtensions.cs
index 23c45d5..3c86976 100644
--- a/HttpClientStudy.Config/WebApiConfigExtensions.cs
+++ b/HttpClientStudy.Config/WebApiConfigExtensions.cs
@@ -51,7 +51,7 @@ namespace HttpClientStudy.Config
///
///
///
- public static IServiceCollection AddWebApiOptions(this IServiceCollection services)
+ public static IServiceCollection UseWebApiOptions(this IServiceCollection services)
{
services.AddOptions();
diff --git a/HttpClientStudy.Config/WebApiConfigManager.cs b/HttpClientStudy.Config/WebApiConfigManager.cs
index 4547040..2a8be71 100644
--- a/HttpClientStudy.Config/WebApiConfigManager.cs
+++ b/HttpClientStudy.Config/WebApiConfigManager.cs
@@ -25,7 +25,7 @@ namespace HttpClientStudy.Config
ServiceCollection services = new ServiceCollection();
services.AddSingleton(configurationBuilder.Build());
- services.AddWebApiOptions();
+ services.UseWebApiOptions();
var webApiConfigOption = services.BuildServiceProvider().GetService>();
if (webApiConfigOption == null)
diff --git a/HttpClientStudy.UnitTest/ConfigTest/WebApiConfigTest.cs b/HttpClientStudy.UnitTest/ConfigTest/WebApiConfigTest.cs
index eae1b14..c77c884 100644
--- a/HttpClientStudy.UnitTest/ConfigTest/WebApiConfigTest.cs
+++ b/HttpClientStudy.UnitTest/ConfigTest/WebApiConfigTest.cs
@@ -25,7 +25,7 @@ namespace HttpClientStudy.UnitTest.ConfigTest
var services = new ServiceCollection();
services.AddSingleton(configuration);
- services.AddWebApiOptions();
+ services.UseWebApiOptions();
var provider = services.BuildServiceProvider();
IOptions? webApiOptions = provider.GetService>();
diff --git a/HttpClientStudy.WebApp/Controllers/ConfigController.cs b/HttpClientStudy.WebApp/Controllers/ConfigController.cs
new file mode 100644
index 0000000..057e8ed
--- /dev/null
+++ b/HttpClientStudy.WebApp/Controllers/ConfigController.cs
@@ -0,0 +1,39 @@
+using HttpClientStudy.Config;
+
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Options;
+
+namespace HttpClientStudy.WebApp.Controllers
+{
+ ///
+ /// 使用配置文件 控制器
+ ///
+ [Route("api/[controller]/[action]")]
+ [ApiController]
+ public class ConfigController : ControllerBase
+ {
+ private ILogger _logger;
+ private IOptionsMonitor _apiConfigMonitor;
+
+ ///
+ /// 构造
+ ///
+ public ConfigController(ILogger logger, IOptionsMonitor apiConfigMonitor)
+ {
+ _logger = logger;
+ _apiConfigMonitor = apiConfigMonitor;
+ }
+
+ ///
+ /// 获取账号
+ ///
+ ///
+ [HttpGet]
+ public IActionResult GetApiConfig()
+ {
+ var reslut = BaseResultUtil.Success(_apiConfigMonitor.CurrentValue);
+ return Ok(reslut);
+ }
+ }
+}
diff --git a/HttpClientStudy.WebApp/HttpClientStudy.WebApp.csproj b/HttpClientStudy.WebApp/HttpClientStudy.WebApp.csproj
index 4d8e356..172dd55 100644
--- a/HttpClientStudy.WebApp/HttpClientStudy.WebApp.csproj
+++ b/HttpClientStudy.WebApp/HttpClientStudy.WebApp.csproj
@@ -5,7 +5,7 @@
enable
enable
true
- true
+ true
diff --git a/HttpClientStudy.WebClient/Controllers/CallApiController.cs b/HttpClientStudy.WebClient/Controllers/CallApiController.cs
index 05fecd8..dc29ab3 100644
--- a/HttpClientStudy.WebClient/Controllers/CallApiController.cs
+++ b/HttpClientStudy.WebClient/Controllers/CallApiController.cs
@@ -5,16 +5,28 @@ using Microsoft.AspNetCore.Mvc;
namespace HttpClientStudy.WebClient.Controllers
{
+ ///
+ /// 调用API 控制器
+ ///
[Route("api/[controller]/[action]")]
[ApiController]
public class CallApiController : ControllerBase
{
private readonly ILogger _logger;
+
+ ///
+ /// 构造
+ ///
+ ///
public CallApiController(ILogger logger)
{
_logger = logger;
}
+ ///
+ /// Ping
+ ///
+ ///
[HttpGet]
public IActionResult Ping()
{
@@ -22,6 +34,11 @@ namespace HttpClientStudy.WebClient.Controllers
return Ok("ping");
}
+ ///
+ /// 异常测试
+ ///
+ ///
+ ///
[HttpGet]
public IActionResult Exception()
{
diff --git a/HttpClientStudy.WebClient/Controllers/ManagerController.cs b/HttpClientStudy.WebClient/Controllers/ManagerController.cs
index 0006b12..b73c0b4 100644
--- a/HttpClientStudy.WebClient/Controllers/ManagerController.cs
+++ b/HttpClientStudy.WebClient/Controllers/ManagerController.cs
@@ -13,6 +13,11 @@ namespace HttpClientStudy.WebClient.Controllers
public class ManagerController : ControllerBase
{
private readonly ILogger _logger;
+
+ ///
+ /// 构造
+ ///
+ ///
public ManagerController(ILogger logger)
{
_logger = logger;
diff --git a/HttpClientStudy.WebClient/HttpClientStudy.WebClient.csproj b/HttpClientStudy.WebClient/HttpClientStudy.WebClient.csproj
index 397261a..81dba61 100644
--- a/HttpClientStudy.WebClient/HttpClientStudy.WebClient.csproj
+++ b/HttpClientStudy.WebClient/HttpClientStudy.WebClient.csproj
@@ -4,10 +4,12 @@
net8.0
enable
enable
+ true
+
diff --git a/HttpClientStudy.WebClient/Program.cs b/HttpClientStudy.WebClient/Program.cs
index 1ae13f5..7fb0f10 100644
--- a/HttpClientStudy.WebClient/Program.cs
+++ b/HttpClientStudy.WebClient/Program.cs
@@ -2,6 +2,8 @@
using HttpClientStudy.Core.Utilities;
+using Microsoft.OpenApi.Models;
+
//启动WebApi程序
AppUtility.StartWebApiProject();
@@ -12,16 +14,79 @@ var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
-builder.Services.AddSwaggerGen();
+//配置Swagger
+builder.Services.AddSwaggerGen(setup =>
+{
+ #region 定义Swagger文档
+ //name参数即为SwaggerUI中SwaggerEndpoint方法参数中的{documentName}
+ //两者必须保持一致,否则异常
+ setup.SwaggerDoc(name: "v1", new Microsoft.OpenApi.Models.OpenApiInfo { Title = "HttpClient学习", Version = "第1版" });
+ #endregion
+
+ #region 包含xml注释
+ var xmlCommentFiles = System.IO.Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "HttpClientStudy.*.xml", System.IO.SearchOption.TopDirectoryOnly);
+ foreach (var xmlFile in xmlCommentFiles)
+ {
+ //includeControllerXmlComments参数:是否启用控制器上的xml注释
+ setup.IncludeXmlComments(filePath: xmlFile, includeControllerXmlComments: true);
+
+ setup.UseInlineDefinitionsForEnums();
+ }
+ #endregion
+
+ /*
+ #region 放置接口Auth授权按钮
+
+ setup.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
+ {
+ Description = "请输入带有Bearer的Token:Bearer {Token}",
+
+ //jwt默认的参数名称
+ Name = "Authorization",
+
+ //jwt默认存放 Authorization 信息的位置:此处为请求头中
+ In = ParameterLocation.Header,
+
+ //验证类型:此处使用Api Key
+ Type = SecuritySchemeType.ApiKey
+ });
+
+ #endregion
+
+ #region 指定方案应用范围
+ setup.AddSecurityRequirement(new OpenApiSecurityRequirement
+ {
+ {
+ new OpenApiSecurityScheme
+ {
+ Reference = new OpenApiReference
+ {
+ Id = "Bearer",
+ Type = ReferenceType.SecurityScheme
+ }
+ },
+ new List()
+ }
+ });
+ #endregion
+ */
+
+ //启用数据注解
+ setup.EnableAnnotations();
+});
var app = builder.Build();
// Configure the HTTP request pipeline.
-if (app.Environment.IsDevelopment())
+app.UseSwagger();
+app.UseSwaggerUI(setup =>
{
- app.UseSwagger();
- app.UseSwaggerUI();
-}
+ setup.EnableDeepLinking();
+ setup.DisplayRequestDuration();
+ setup.ShowCommonExtensions();
+ setup.ShowExtensions();
+ setup.EnableFilter();
+});
app.UseAuthorization();