首页 > 编程语言 >c#配置swagger文档

c#配置swagger文档

时间:2024-07-24 16:34:09浏览次数:13  
标签:xml c# builder 文档 new swagger app

.net core6.0注入swagger,.net core 配置swagger文档
6.1号更新token验证

 


builder.Services.AddSwaggerGen(c =>
{
//添加token验证
c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
{
Description = "请输入token,格式为 Bearer xxxxxxxx",
Name = "Authorization", //标头名
In = ParameterLocation.Header, //表示头部
Type = SecuritySchemeType.ApiKey,
BearerFormat = "JWT", //token
Scheme = "Bearer"
});
//添加验证条件
c.AddSecurityRequirement(new OpenApiSecurityRequirement {
{
new OpenApiSecurityScheme{
Reference =new OpenApiReference{
Type = ReferenceType.SecurityScheme,
Id ="Bearer"
}
},new string[]{ }//不设权限
}
});
c.SwaggerDoc("v1", new()
{
Title = builder.Environment.ApplicationName,//名字
Version = "v1",//版本
Description = $"会员管理接口平台",
});
var path = Path.Combine(AppContext.BaseDirectory, "DG.QIAN.Members.Api.xml"); // xml文档绝对路径,"API"为项目名
c.IncludeXmlComments(path, true); // true : 设置控制器层注释
c.OrderActionsBy(o => o.RelativePath); // 排序用的
});
添加划线代码即可添加待标头的请求,如

 

在里面填写对应的token值就行了

 

前言:虽然现在已经有.net8.0了,但是.net6因为已经出来两年了,所以更多公司在用,而且6.0和8.0的差别并不是很大,还是有一些可学的地方的,目前.net core 6.0的资料是最多的,所以搭建项目建议使用6.0会比较好

下面演示环境为visual studio2022+.net core webapi,其他项目也类似,讲的会比较细

在.net3.0之前创建项目会自动添加swagger管理,后面的更新之后需要手动开启openapi才会有支持:例如

#新建项目添加swagger

 


勾选openapi支持

 

 

直接运行,你会看到直接就能使用swagger,这是新建项目自带的

 

 

但是他不会有对方法的注释,需要添加一些注入,如:

图片中有详细的解释,一眼看过去会比较乱,仔细看所有的东西都在里面

 

 

代码:

using Microsoft.OpenApi.Models;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

builder.Services.AddControllers();
//注入swagger
builder.Services.AddEndpointsApiExplorer();//生成文档
builder.Services.AddSwaggerGen(c =>//设置文档内容
{
c.SwaggerDoc("v1", new()
{
Title = builder.Environment.ApplicationName,//组名字,右上角可以选择
Version = "v1",//版本
Description = $"接口文档说明,放这里 ",
Contact = new OpenApiContact()
{
Name = "zhangsan",//名字
Email = "[email protected]",//邮箱
Url = null
}//通常这里都是放联系,地址的,一般不用
});
// xml文档绝对路径,"WebApplication2"为项目名,表示读取该项目的xml文件
var file = Path.Combine(AppContext.BaseDirectory, "WebApplication2.xml");
// xml文档绝对路径
var path = Path.Combine(AppContext.BaseDirectory, file);
// true : 设置控制器层注释,对控制器中方法的注释的显示
c.IncludeXmlComments(path, true);
// 对方法名的名称进行排序,首字母顺序。
c.OrderActionsBy(o => o.RelativePath);
});
var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())//只有当程序处于debug的情况才开启swagger
{
//分别注入中间件和ui中间间
app.UseSwagger();
//第一个为路径不能更改,第二个为版本可以更改
app.UseSwaggerUI(c => c.SwaggerEndpoint(
"/swagger/v1/swagger.json", $"{builder.Environment.ApplicationName} v1"));
}
app.UseAuthorization();

app.MapControllers();

app.Run();
将上面代码放进去会报错,因为我们设置了xml文档地址:开启方法》右键项目》属性》生成》输出》打开“生成包含api的文档的文件”

之后就可以直接运行了。

#在旧项目中添加swagger
还是以.ner core webapi举例,

在program中添加以下代码

 

 

//注入swagger
builder.Services.AddEndpointsApiExplorer();//生成文档
builder.Services.AddSwaggerGen(c =>//设置文档内容
{
c.SwaggerDoc("v1", new()
{
Title = builder.Environment.ApplicationName,//组名字,右上角可以选择
Version = "v1",//版本
Description = $"接口文档说明,放这里 ",
Contact = new OpenApiContact()
{
Name = "zhangsan",//名字
Email = "[email protected]",//邮箱
Url = null
}//通常这里都是放联系,地址的,一般不用
});
// xml文档绝对路径,"WebApplication2"为项目名,表示读取该项目的xml文件
var file = Path.Combine(AppContext.BaseDirectory, "WebApplication1.xml");
// xml文档绝对路径
var path = Path.Combine(AppContext.BaseDirectory, file);
// true : 设置控制器层注释,对控制器中方法的注释的显示
c.IncludeXmlComments(path, true);
// 对方法名的名称进行排序,首字母顺序。
c.OrderActionsBy(o => o.RelativePath);
});

if (app.Environment.IsDevelopment())//只有当程序处于debug的情况才开启swagger
{
//分别注入中间件和ui中间间
app.UseSwagger();
//第一个为路径不能更改,第二个为版本可以更改
app.UseSwaggerUI(c => c.SwaggerEndpoint(
"/swagger/v1/swagger.json", $"{builder.Environment.ApplicationName} v1"));
}
和上一个基本一致,注释都在代码中有写,在项目属性中开启“生成包含api文档的文件”,开启方法》右键项目》属性》生成》输出》打开“生成包含api的文档的文件”

然后在项目的nuget包中引用:Swashbuckle.AspNetCore,版本和环境版本一致即可。新建项目时如果选中openapi支持就会自动引用

x

 

注入之后就可以正常运行了,但是有一部分会报错,运行了,但是swagger不出现,只有控制台启动了。

有一个可能是,老项目的urls地址可能设置在appsettings.json文件中,如:

 

 

这里的urls设定了项目启动之后的指定地址,但是swagger注入是找的Properties文件下的launchSettings.json文件中指定的url地址,导致项目启动时找不到swagger.xml文件,所以不会启动浏览器生成swaggerUI了。(新建项目一般不会出现这个问题)

我们的项目地址应该在这里设置,其中以什么方式运行,这个就是基础了,试一下就知道了,

例如我们 使用默认容器运行,,

 

 

在profiles中设置,“launchUrl”应该为“swagger”,“applicationUrl”设置服务启动地址,如“http://localhost:5293”。对应以下》

 

标签:xml,c#,builder,文档,new,swagger,app
From: https://www.cnblogs.com/raincedar/p/18321145

相关文章

  • cpu proc sys文件系统下的含义
    proc文件系统(/proc/sys/kernel/)sched_child_runs_first/proc/sys/kernel/sched_child_runs_first是Linux内核中的一个配置文件,它用于控制调度器如何处理新创建的进程(即子进程)与它们的父进程之间的关系。功能说明:sched_child_runs_first:这个文件的值决定了当一个新进程(子进......
  • CrowdStrike引起的一次失败又成功的故障恢复
    本地域成员物理服务器因为CS事件挂了,但是没有本地账户,无法网络账号登录去处理删除那个导致故障的文件。安全模式带网络的启动模式也不行,因为安全模式网络起不来。这是因为服务器上做了网卡聚合,所以安全模式网络有些问题,起不来,网络不通有人登录成功,但是再次登录失败,应该是缓存过......
  • C++ opencv putText
    C++opencv putText  #include<opencv2/opencv.hpp>intmain(){//创建一个空白图像cv::Matimg(400,400,CV_8UC3,cv::Scalar(255,255,255));//设置文本内容std::stringtext="Hello,OpenCV!";//设置文本起始坐标(左下角坐标)......
  • 服务端渲染中的数据获取:结合 useRequestHeaders 与 useFetch
    title:服务端渲染中的数据获取:结合useRequestHeaders与useFetchdate:2024/7/24updated:2024/7/24author:cmdragonexcerpt:摘要:本文介绍Vue服务端渲染中使用useRequestHeaders获取请求头部信息,如cookie和authorization,示例展示了如何在SSR环境下结合useFetch进行API......
  • 求解!do...while 语句嵌套switch语句为何会出现死循环?
    这是我写的一段实现通讯录的代码voidmenu(){ printf("**************************************\n"); printf("*******1.Add2.Del*****\n"); printf("*******3.Search4.Modify*****\n"); printf("*******5.Show......
  • SketchUp v2023 激活版下载与安装教程 (强大的绘图三维建模工具)
    前言Sketchup草图大师专业版,一套面向建筑师、城市规划专家、制片人、游戏开发者以及相关专业人员的3D建模程序,全球知名的三维建模软件,强大的绘图工具、建模渲染、扩展插件和渲染器模板、海量3D模型库及建模灯光材质渲染效果图,用于建筑师、城市规划专家、游戏开发等行业。......
  • Ubuntu中如何使用Update-rc.d命令(转)
    在Ubuntu中,update-rc.d命令用于管理系统的服务(init脚本)的启动和停止顺序。它允许你将服务添加到特定的运行级别,并设置服务在系统启动时是否自动启动。以下是一些常用的update-rc.d命令示例及其说明:添加服务到特定运行级别:sudo update-rc.d  defaults将指定的服务添加到默认......
  • 中望CAD 机械 v2024 解锁版下载与安装教程 (CAD三维制图)
    前言中望CAD机械版是一款国产CAD制图软件,专为机械设计而打造。中望CAD机械版2024中文版拥有丰富的标准零件图库,提供绘图标准规范,并支持定制化需求。其智能注释功能更是一大亮点,通过一个命令即可完成80%的标注工作,极大提高了绘图效率。一、下载地址下载链接:中望CAD机械......
  • CSS 基础知识
    CSS(级联样式表)是设置Web内容样式的代码。CSS基础知识将介绍入门所需的内容。我们将回答以下问题:如何将文本设置为红色?如何使内容显示在(网页)布局中的某个位置?如何用背景图片和颜色装饰我的网页?什么是CSS?像HTML一样,CSS不是一种编程语言。它也不是一种标记语言。CSS是一种......
  • JavaScript 基础知识
    JavaScript是一种编程语言,可为您的网站增加交互性。这发生在游戏中,在按下按钮或在表单上输入数据时的响应行为中;具有动态样式;带有动画等。本文可帮助您开始使用JavaScript,并进一步了解可能的情况。什么是JavaScript?JavaScript 是一种功能强大的编程语言,可以为网站......