main
wanggaofeng 10 months ago
parent 1b593cf14a
commit 3ff8983bd0

@ -51,7 +51,7 @@ namespace HttpClientStudy.Config
/// </summary> /// </summary>
/// <param name="serviceProvider"></param> /// <param name="serviceProvider"></param>
/// <returns></returns> /// <returns></returns>
public static IServiceCollection AddWebApiOptions(this IServiceCollection services) public static IServiceCollection UseWebApiOptions(this IServiceCollection services)
{ {
services.AddOptions(); services.AddOptions();

@ -25,7 +25,7 @@ namespace HttpClientStudy.Config
ServiceCollection services = new ServiceCollection(); ServiceCollection services = new ServiceCollection();
services.AddSingleton<IConfiguration>(configurationBuilder.Build()); services.AddSingleton<IConfiguration>(configurationBuilder.Build());
services.AddWebApiOptions(); services.UseWebApiOptions();
var webApiConfigOption = services.BuildServiceProvider().GetService<IOptionsMonitor<WebApiConfig>>(); var webApiConfigOption = services.BuildServiceProvider().GetService<IOptionsMonitor<WebApiConfig>>();
if (webApiConfigOption == null) if (webApiConfigOption == null)

@ -25,7 +25,7 @@ namespace HttpClientStudy.UnitTest.ConfigTest
var services = new ServiceCollection(); var services = new ServiceCollection();
services.AddSingleton(configuration); services.AddSingleton(configuration);
services.AddWebApiOptions(); services.UseWebApiOptions();
var provider = services.BuildServiceProvider(); var provider = services.BuildServiceProvider();
IOptions<WebApiConfig>? webApiOptions = provider.GetService<IOptions<WebApiConfig>>(); IOptions<WebApiConfig>? webApiOptions = provider.GetService<IOptions<WebApiConfig>>();

@ -0,0 +1,39 @@
using HttpClientStudy.Config;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
namespace HttpClientStudy.WebApp.Controllers
{
/// <summary>
/// 使用配置文件 控制器
/// </summary>
[Route("api/[controller]/[action]")]
[ApiController]
public class ConfigController : ControllerBase
{
private ILogger<SimpleController> _logger;
private IOptionsMonitor<WebApiConfig> _apiConfigMonitor;
/// <summary>
/// 构造
/// </summary>
public ConfigController(ILogger<SimpleController> logger, IOptionsMonitor<WebApiConfig> apiConfigMonitor)
{
_logger = logger;
_apiConfigMonitor = apiConfigMonitor;
}
/// <summary>
/// 获取账号
/// </summary>
/// <returns></returns>
[HttpGet]
public IActionResult GetApiConfig()
{
var reslut = BaseResultUtil.Success(_apiConfigMonitor.CurrentValue);
return Ok(reslut);
}
}
}

@ -5,7 +5,7 @@
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<InvariantGlobalization>true</InvariantGlobalization> <InvariantGlobalization>true</InvariantGlobalization>
<GenerateDocumentationFile>true</GenerateDocumentationFile> <GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

@ -5,16 +5,28 @@ using Microsoft.AspNetCore.Mvc;
namespace HttpClientStudy.WebClient.Controllers namespace HttpClientStudy.WebClient.Controllers
{ {
/// <summary>
/// 调用API 控制器
/// </summary>
[Route("api/[controller]/[action]")] [Route("api/[controller]/[action]")]
[ApiController] [ApiController]
public class CallApiController : ControllerBase public class CallApiController : ControllerBase
{ {
private readonly ILogger<CallApiController> _logger; private readonly ILogger<CallApiController> _logger;
/// <summary>
/// 构造
/// </summary>
/// <param name="logger"></param>
public CallApiController(ILogger<CallApiController> logger) public CallApiController(ILogger<CallApiController> logger)
{ {
_logger = logger; _logger = logger;
} }
/// <summary>
/// Ping
/// </summary>
/// <returns></returns>
[HttpGet] [HttpGet]
public IActionResult Ping() public IActionResult Ping()
{ {
@ -22,6 +34,11 @@ namespace HttpClientStudy.WebClient.Controllers
return Ok("ping"); return Ok("ping");
} }
/// <summary>
/// 异常测试
/// </summary>
/// <returns></returns>
/// <exception cref="Exception"></exception>
[HttpGet] [HttpGet]
public IActionResult Exception() public IActionResult Exception()
{ {

@ -13,6 +13,11 @@ namespace HttpClientStudy.WebClient.Controllers
public class ManagerController : ControllerBase public class ManagerController : ControllerBase
{ {
private readonly ILogger<ManagerController> _logger; private readonly ILogger<ManagerController> _logger;
/// <summary>
/// 构造
/// </summary>
/// <param name="logger"></param>
public ManagerController(ILogger<ManagerController> logger) public ManagerController(ILogger<ManagerController> logger)
{ {
_logger = logger; _logger = logger;

@ -4,10 +4,12 @@
<TargetFramework>net8.0</TargetFramework> <TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
<PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="6.6.2" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

@ -2,6 +2,8 @@
using HttpClientStudy.Core.Utilities; using HttpClientStudy.Core.Utilities;
using Microsoft.OpenApi.Models;
//启动WebApi程序 //启动WebApi程序
AppUtility.StartWebApiProject(); AppUtility.StartWebApiProject();
@ -12,16 +14,79 @@ var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers(); builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer(); 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的TokenBearer {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<string>()
}
});
#endregion
*/
//启用数据注解
setup.EnableAnnotations();
});
var app = builder.Build(); var app = builder.Build();
// Configure the HTTP request pipeline. // Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment()) app.UseSwagger();
app.UseSwaggerUI(setup =>
{ {
app.UseSwagger(); setup.EnableDeepLinking();
app.UseSwaggerUI(); setup.DisplayRequestDuration();
} setup.ShowCommonExtensions();
setup.ShowExtensions();
setup.EnableFilter();
});
app.UseAuthorization(); app.UseAuthorization();

Loading…
Cancel
Save