今天教大家如何配置.net core 6.0以上的版本的Swagger文档;.Net Core 6.0 以上的swagger和以前的3.1版本不太一样了,少了,startup类,所以,我们注入的时候会和之前不太一样!!
一、创建一个.Net Core 6.0 以上的项目
打开后发现,项目里里面没有Startup注入的文件类;只有一个Program类;
二、我们需要下载一个关于配置Swagger注入的NuGet包
只有下载了这个包,我们才能够在Program里面进行注入,否则的话,里面有一些内置方式是不能用的。如:AddSwaggerGen
三、注入Swagger功能
点开Program在里面进行NuGet包的引用和注入
using Microsoft.EntityFrameworkCore;
using Microsoft.OpenApi.Models;
using UserAPI.Model;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
var ConnString = "Data Source=8.130.75.152;Initial Catalog=Students;User ID=sa;Password=Admin123";
//注入
builder.Services.AddDbContext<DbEntitys>(x => x.UseSqlServer(ConnString));
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
//----------------swagger配置---------------------
var ApiName = "NoName.Core";
builder.Services.AddSwaggerGen(s =>
{
s.SwaggerDoc("V1", new OpenApiInfo
{
Version = "V1",
Title = $"{ApiName} 接口文档——Netcore 6.0",
});
s.OrderActionsBy(o => o.RelativePath);
});
//----------------swagger配置---------------------
var app = builder.Build();
//----------------swagger配置---------------------
app.UseSwagger();
app.UseSwaggerUI(s =>
{
s.SwaggerEndpoint($"/swagger/V1/swagger.json", $"{ApiName} V1");
s.RoutePrefix = "";//请求swagger路径
});
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
//----------------swagger配置---------------------
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
我在代码里面已经标注好了, 注入的位置 ,在谁的上面,在谁的下面。按照位置进行注入;否则,如果注入的地方不对的话是不能运行的;
四、配置Swagger启动路径
正常情况下,如果没有配置路径的话,他默认启动,会找不到页面,所以我们需要配置一下路径;
1、点开Properties文件夹下的launchSettings.json文件
打开后里面是这样的:
{
"$schema": "https://json.schemastore.org/launchsettings.json",
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:44707",
"sslPort": 44367
}
},
"profiles": {
"UserAPI": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
//"launchUrl": "swagger",
//"applicationUrl": "https://localhost:7203;http://localhost:5203",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
我们只需要把profiles里面的的launchUrl和applicationUrl给注释掉就行,如果只是本地跑的话。也可以直接在"launchUrl": "swagger/index.html"如果要发布的话,但是还不确定自己要发布的IP或者域名,就直接把applicationUrl给注释了就行了。