net6 项目搭建及引用框架记录(log4net,autofac,exception,api result,jwt,efcore)一建立项目,使用Swagger

Posted 圆滚滚的胖狸

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了net6 项目搭建及引用框架记录(log4net,autofac,exception,api result,jwt,efcore)一建立项目,使用Swagger相关的知识,希望对你有一定的参考价值。

.net core webapi项目,连接mysql云数据库,orm采用efcore,最终linux布署

开发工具vs2022,dotnet版本 .net6。

传统的vs项目建立方式

一、建立WebApi项目

 

 

 先将项目运行起来看一下

 

看到swagger页面,说明项目已经正常的被建立

也可以尝试下项目自带的api

 

 

 

 

二、配置swagger使用

在program.cs添加以下语句

var builder = WebApplication.CreateBuilder(args);
//在这里添加以下语句,这是添加项目路径和配置文档
var basePath = AppContext.BaseDirectory;
var config = new ConfigurationBuilder()
                .SetBasePath(basePath)
                .AddJsonFile("appsettings.json",optional:true,reloadOnChange:true)
                .Build();
#region 添加Swagger注释

// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();//这是原本就有的

builder.Services.AddSwaggerGen(options =>  //这一句也是原来就有,需要修改成这样子
    options.SwaggerDoc("v1", new OpenApiInfo
    
        Version = "v1",
        Title = "ToDo API",
        Description = "An ASP.NET Core Web API for NET6Demo ToDo items",
       
    );

    var xmlPath = Path.Combine($"basePath/ApiDoc", "NET6Demo.xml"); // 这里的文件,需要了自己手动创建,并将属性改为 “始终复制”
    options.IncludeXmlComments(xmlPath);
    options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
    
        Description = "JWT授权(数据将在请求头中进行传输) 在下方输入Bearer token 即可,注意两者之间有空格",
        Name = "Authorization",
        In = ParameterLocation.Header,
        Type = SecuritySchemeType.ApiKey,
        Scheme = "Bearer"
    );
    options.AddSecurityRequirement(new OpenApiSecurityRequirement()
    
        
            new OpenApiSecurityScheme
            
                Reference = new OpenApiReference
                
                    Type = ReferenceType.SecurityScheme,
                    Id = "Bearer"
                ,Scheme = "oauth2",Name = "Bearer",In=ParameterLocation.Header,
            ,new List<string>()
        
    );

    

);

#endregion
var app = builder.Build();//在这一句后面添加

#region 启用swaggerUI

app.UseSwagger();
app.UseSwaggerUI(c =>

    c.SwaggerEndpoint("/swagger/v1/swagger.json", "V1 Docs");
    c.RoutePrefix = String.Empty;
    c.DocExpansion(Swashbuckle.AspNetCore.SwaggerUI.DocExpansion.List);
    c.DefaultModelExpandDepth(-1);
);

#endregion

再次运行,swagger首页已经改变

 

注意,可能在这里启动后会出现无法打开网页,那是因为启动的路径发生了改变

我们需要在api项目中的launchSettings.json文件中改变设置

 

 launchSettings.json


  "$schema": "https://json.schemastore.org/launchsettings.json",
  "iisSettings": 
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": 
      "applicationUrl": "http://localhost:8305",
      "sslPort": 44311
    
  ,
  "profiles": 
    "NET6Demo_WebApi": 
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "launchUrl": "",
      "applicationUrl": "https://localhost:7033;http://localhost:5033",
      "environmentVariables": 
        "ASPNETCORE_ENVIRONMENT": "Development"
      
    ,
    "IIS Express": 
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "swagger",
      "environmentVariables": 
        "ASPNETCORE_ENVIRONMENT": "Development"
      
    
  

不过swagger的文档真的不如Apifox好用,所以后期还是要用Apifox做文档。因此这里不再过多的描述

三、建立配套类库,并配置依赖顺序

 

 

删除各项目下的class1.cs

其它项目的依赖,可以随着代码编写逐渐加入

至于项目这样建立的目的,为的是搭建框架的Ioc,引入autofac

以上是关于net6 项目搭建及引用框架记录(log4net,autofac,exception,api result,jwt,efcore)一建立项目,使用Swagger的主要内容,如果未能解决你的问题,请参考以下文章

net6 项目搭建及引用框架记录(log4net,autofac,exception,api result,jwt,efcore)二配置log4net

net6 项目搭建及引用框架记录(log4net,autofac,exception,api result,jwt,efcore)六添加身份验证,引入JWT

net6 项目搭建及引用框架记录(log4net,autofac,exception,api result,jwt,efcore)六添加身份验证,引入JWT

net6 项目搭建及引用框架记录(log4net,autofac,exception,api result,jwt,efcore)六添加身份验证,引入JWT

net6 项目搭建及引用框架记录(log4net,autofac,exception,api result,jwt,efcore)一建立项目,使用Swagger

net6 项目搭建及引用框架记录(log4net,autofac,exception,api result,jwt,efcore)一建立项目,使用Swagger