网站被百度蜘蛛爬了多久放出来,临沂网站建设技术托管,wordpress 七牛云,深圳营销型网站建设电话从本篇开始#xff0c;介绍一些很不错的三方库#xff0c;来丰富MiniAPI的使用。在创建MiniAPI项目时#xff0c;模板提供了一个是否启用OpenAPI的选项#xff0c;足见这个三方库的优势和强大。OpenAPI为我们测试API提供了强大的支持#xff0c;调用API的开发人员#xf… 从本篇开始介绍一些很不错的三方库来丰富MiniAPI的使用。在创建MiniAPI项目时模板提供了一个是否启用OpenAPI的选项足见这个三方库的优势和强大。OpenAPI为我们测试API提供了强大的支持调用API的开发人员可以轻松测试参照开发接口和接口参数有效的节省了大量文档的书写和调试流程复杂性。为了更好的说明需要开启注释文件生成功能打开项目文件增加GenerateDocumentdationFile节点即可。Project SdkMicrosoft.NET.Sdk.WebPropertyGroupTargetFrameworknet6.0/TargetFrameworkNullableenable/NullableImplicitUsingsenable/ImplicitUsingsGenerateDocumentationFileTrue/GenerateDocumentationFile/PropertyGroupItemGroupPackageReference IncludeSwashbuckle.AspNetCore Version6.2.3 //ItemGroup
/Project先看Swagger引入的代码using Microsoft.OpenApi.Models;var builder WebApplication.CreateBuilder(args);builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(c
{c.SwaggerDoc(v1,new OpenApiInfo{Title MiniAPI08-V1,Version v1});//设置xml引用var filePath Path.Combine(System.AppContext.BaseDirectory, MiniAPI08.xml);c.IncludeXmlComments(filePath);//添加授权var schemeName Bearer;c.AddSecurityDefinition(schemeName, new OpenApiSecurityScheme{In ParameterLocation.Header,Description 请输入不带有Bearer的Token,Name Authorization,Type SecuritySchemeType.Http,Scheme schemeName.ToLowerInvariant(),BearerFormat JWT});c.AddSecurityRequirement(new OpenApiSecurityRequirement {{new OpenApiSecurityScheme{Reference new OpenApiReference{Type ReferenceType.SecurityScheme,Id schemeName}},new string[0]}});
});var app builder.Build();if (app.Environment.IsDevelopment())
{app.UseSwagger();app.UseSwaggerUI(c {c.EnablePersistAuthorization();});
}app.MapPut(/test, (Data data)
{
})
.WithName(puttest)
.WithTags(all test);app.MapDelete(/test/{id}, TestHandle.DeleteTest)
.WithName(deletetest)
.WithTags(all test);app.MapGet(/test/{id}, (HttpRequest request, int id)
{Console.WriteLine(request.Headers[Authorization]);
})
.WithName(gettest)
.WithTags(all test)
.ProducesData(StatusCodes.Status200OK)
.Produces(StatusCodes.Status404NotFound);app.MapPost(/test, (Data data) {})
.WithName(posttest)
.WithTags(all test);app.Run();class TestHandle
{/// summary/// 删除Test/// /summary/// param nameidData的主键/param/// returns/returnspublic static bool DeleteTest(int id){return true;}
}
/// summary
/// 提交数据
/// /summary
class Data
{/// summary/// 编号 /// /summarypublic int Id { get; set; }/// summary/// 名称/// /summarypublic string Name { get; set; }
}Tags 是all test可以把同类操作放在一个组里对应着swagger的一组现在的MiniAPI对单个请求还不支持注释就是get ,post,put,delete的api注释相信.NET 7会解决掉。如果请求的方法是匿名方法同样参数也是不支持说明的如果像delete请求指像命名方法方法的参数是注释说明是会显示在swagger里的如查Mini API支持Token验证可以通过AddSwaggerGen添加Security来实现自带Token具体做法见代码实现c.AddSecurityDefinition和 c.AddSecurityRequirement。这样可以在Swagger页面点击Authorize按钮输入Token这时所有的请求都会带上Authorization的header。调用Get方法时会自动带上Authorization后端会获取到Token数据