17人参与 • 2025-02-27 • Asp.net
打开你的c#项目解决方案,在visual studio中,右键点击项目名称,选择“管理nuget程序包”。
在nuget包管理器中,搜索以下包并进行安装:
startup.cs
文件中,找到configureservices
方法,在其中添加以下代码来配置swagger服务:using microsoft.openapi.models; using swashbuckle.aspnetcore.swaggergen; public void configureservices(iservicecollection services) { // 其他服务配置... // 添加swagger生成器服务 services.addswaggergen(c => { // 定义swagger文档信息 c.swaggerdoc("v1", new openapiinfo { version = "v1", title = "your api title", description = "your api description", termsofservice = new uri("https://example.com/terms"), contact = new openapicontact { name = "contact name", email = "contact@example.com", url = new uri("https://example.com/contact") }, license = new openapilicense { name = "license name", url = new uri("https://example.com/license") } }); // 配置xml注释文件路径,以便在swagger文档中显示方法注释等信息 var xmlfile = $"{assembly.getexecutingassembly().getname().name}.xml"; var xmlpath = path.combine(appcontext.basedirectory, xmlfile); c.includexmlcomments(xmlpath); // 如果你的api有身份验证等安全机制,可以在这里配置 c.addsecuritydefinition("bearer", new openapisecurityscheme { in = parameterlocation.header, description = "please enter jwt with bearer prefix", name = "authorization", type = securityschemetype.apikey }); c.addsecurityrequirement(new openapisecurityrequirement { { new openapisecurityscheme { reference = new openapireference { type = referencetype.securityscheme, id = "bearer" } }, new string[] {} } }); }); }
addswaggergen
方法添加了swagger生成器服务,并定义了swagger文档的基本信息,如版本、标题、描述等。然后配置了xml注释文件的路径,这样swagger会根据xml注释生成更详细的文档内容。最后,配置了bearer令牌的身份验证机制。startup.cs
文件的configure
方法中,添加以下代码来启用swagger中间件:public void configure(iapplicationbuilder app, iwebhostenvironment env) { // 其他中间件配置... // 启用swagger app.useswagger(); // 启用swagger ui,指定swagger json文档的路由 app.useswaggerui(c => { c.swaggerendpoint("/swagger/v1/swagger.json", "your api v1"); // 如果需要,可以配置swagger ui的其他选项,如文档展开深度等 c.docexpansion(docexpansion.none); }); }
useswagger
中间件来生成swagger json文档,然后使用useswaggerui
中间件来提供swagger ui界面,方便用户查看和测试api。通过swaggerendpoint
方法指定了swagger json文档的路由和显示在swagger ui中的文档名称。http://localhost:port/swagger
,其中port
是你的项目运行的端口号。/// <summary> /// 获取用户信息 /// </summary> /// <param name="id">用户id</param> /// <returns>用户信息对象</returns> [httpget("{id}")] public iactionresult getuser(int id) { // 方法实现 }
在配置swagger服务时,添加安全定义可以让你为api指定各种安全机制,如jwt认证、api密钥认证等。以下以常见的jwt认证和api密钥认证为例,介绍如何添加安全定义:
添加命名空间引用
在startup.cs
文件的顶部,添加以下命名空间引用:
using microsoft.openapi.models; using swashbuckle.aspnetcore.swaggergen;
在configureservices方法中配置swagger安全定义
在startup.cs
文件的configureservices
方法中,找到services.addswaggergen(c => {})
代码块,在其中添加以下代码:
// 添加swagger生成器服务 services.addswaggergen(c => { // 其他swagger配置... // 添加jwt bearer安全定义 c.addsecuritydefinition("bearer", new openapisecurityscheme { // 定义安全机制的类型为api密钥 type = securityschemetype.apikey, // 说明该密钥位于请求头中 in = parameterlocation.header, // 请求头中用于传递jwt令牌的字段名称 name = "authorization", // 对该安全定义的描述,在swagger ui中会显示给用户 description = "请输入带有bearer前缀的jwt令牌" }); // 添加安全要求,指定使用bearer安全定义的api需要进行身份验证 c.addsecurityrequirement(new openapisecurityrequirement { { new openapisecurityscheme { // 引用前面定义的bearer安全定义 reference = new openapireference { type = referencetype.securityscheme, id = "bearer" } }, // 这里可以指定一些额外的作用域或权限,如果不需要可以留空数组 new string[] { } } }); });
上述代码首先使用addsecuritydefinition
方法添加了名为bearer
的安全定义,指定了安全机制为api密钥,位于请求头的authorization
字段中,并给出了描述。然后使用addsecurityrequirement
方法指定了使用bearer
安全定义的api需要进行身份验证。
添加命名空间引用
同样在startup.cs
文件的顶部,添加与jwt认证安全定义时相同的命名空间引用:
using microsoft.openapi.models; using swashbuckle.aspnetcore.swaggergen;
在configureservices方法中配置swagger安全定义
在startup.cs
文件的configureservices
方法中,找到services.addswaggergen(c => {})
代码块,在其中添加以下代码:
// 添加swagger生成器服务 services.addswaggergen(c => { // 其他swagger配置... // 添加api密钥安全定义 c.addsecuritydefinition("apikey", new openapisecurityscheme { // 定义安全机制的类型为api密钥 type = securityschemetype.apikey, // 说明该密钥位于请求头中 in = parameterlocation.header, // 请求头中用于传递api密钥的字段名称 name = "x-api-key", // 对该安全定义的描述,在swagger ui中会显示给用户 description = "请输入你的api密钥" }); // 添加安全要求,指定使用apikey安全定义的api需要提供有效的api密钥 c.addsecurityrequirement(new openapisecurityrequirement { { new openapisecurityscheme { // 引用前面定义的apikey安全定义 reference = new openapireference { type = referencetype.securityscheme, id = "apikey" } }, // 这里可以指定一些额外的作用域或权限,如果不需要可以留空数组 new string[] { } } }); });
上述代码添加了名为apikey
的安全定义,指定安全机制为api密钥,位于请求头的x - api - key
字段中,并给出了描述。同时也添加了安全要求,确保使用apikey
安全定义的api在调用时需要提供有效的api密钥。
在swagger中可以方便地进行api的测试和调试,以下是具体步骤:
访问swagger ui:启动项目后,在浏览器中输入swagger ui的地址,如http://localhost:port/swagger
,其中port
是项目运行的端口号。进入swagger ui界面,会看到项目中所有暴露的api列表,每个api以其定义的http方法(如get、post、put、delete等)和路径显示。
选择要测试的api:在swagger ui中找到想要测试的api端点。每个api端点都有对应的描述和参数信息。
填写参数:对于需要参数的api,在swagger ui提供的参数输入区域填写相应的值。参数类型可能包括路径参数、查询参数、请求体参数等。
{}
表示,直接在对应的输入框中输入参数值。?
开始,多个参数之间用&
连接,在swagger ui中会有专门的输入框供填写查询参数的名称和值。设置请求头:如果api需要特定的请求头信息,如authorization
、content-type
等,在swagger ui中找到“请求头”或类似的区域,添加相应的请求头名称和值。例如,如果api需要进行身份验证,可能需要在这里添加authorization
头,并设置其值为有效的令牌。
执行测试:填写完参数和请求头后,点击api端点旁边的“执行”或“试一下!”按钮,swagger将发送请求到后端api。
查看响应结果:发送请求后,swagger ui会显示api的响应结果,包括响应状态码、响应头和响应体。可以根据响应信息判断api是否正常工作,以及返回的数据是否符合预期。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论