main
wanggaofeng 9 months ago
parent 1b593cf14a
commit 3ff8983bd0

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

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

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

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

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

@ -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的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();
// 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();

Loading…
Cancel
Save