.net core 使用 swagger 生成接口文档
2024-08-24 05:38:18
在 .net core 中使用 swagger 生成接口文档跟在 asp.net 中使用方式一样,但把 swagger 添加到项目中不在生成SwaggerConfig.cs 文件 ,需自己配置。
项目引入Swagger
我这里安装的是VS2017, 当然 VS Code也是可以的。 Nuget安装Swagger的命令是:
Install-Package Swashbuckle.AspNetCore -Pre
注意:Nuget包管理添加时一定要注意选择的时候 选择 Swashbuckle.AspNetCore 默认的 Swashbuckle 不支持 asp.net core
基于asp.net core 的中间件机制, Swagger也需要加入到中间件服务的列表中, 这样才可以启用Swagger。在 Startup.cs 中的 ConfigureServices 跟 Configure 方法添加 Swagger 代码如下:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
//添加Swagger.
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info { Title = "DemoAPI", Version = "v1" });
});
} // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
} app.UseMvc();
//配置Swagger
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "DemoAPI V1");
});
}
修改Web API项目首页重定向
根据需要,找到项目 Properties下的 launchSettings.json 文件,比如修改IIS Express节点下的launchUrl,将其改为下图中的值,这样启动时就重定向到指定的地址
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
配置 Swagger UI
安装好 Swagger 之后,在需要生成 API 文档的项目当中勾选 XML documentation file. (这个的主要功能是将注释方法使干什么的 参数的限制显示出来)
之后我们需要在 StartUp
当中配置 Swagger 相关的设置。
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); services.AddSwaggerGen(options =>
{
options.SwaggerDoc("v1", new Info() { Title = "测试版本", Version = "v1" }); options.CustomSchemaIds(type => type.FullName); // 解决相同类名会报错的问题 options.IncludeXmlComments(Path.Combine(Directory.GetCurrentDirectory(), "Centa.Data.SwaggerTest.XML")); // 标注要使用的 XML 文档
});
}
编写完成之后我们运行项目,访问 swagger 的页面就会显示成功了:
最新文章
- 使用shell脚本实现ping对应IP所对应的人名
- java读取记事本文件的部分数据添加到mysql
- Linux下建立软链接
- Centos优化Hadoop
- sqlserver 2008 服务器拒绝连接;拒绝访问指定的数据库
- C程序的内存分配
- FFmpeg在Android使用3
- NOIP2011 Mayan游戏
- bzoj1046
- ES6的let命令实现猜想
- Java设计模式偷跑系列(六)Singleton模式的建模与实现
- Python学习笔记——基础篇【第五周】——random &; time &; datetime模块
- learn from 德国老师
- html <;input type=";text"; />;加上readonly后在各种浏览器的差异。
- Windows 2008 R2_NLB网络负载均衡(图文详解)(转)
- python pip 安装库文件报错:pip install ImportError: No module named _internal
- Codeforces976E Well played! 【贪心】
- web漏洞详解及修复建议
- Intellij IDEA 编译等级与源代码等级不一致问题
- Python float() 函数
热门文章
- ecilpse 纠错插件
- 可以Postman,也可以cURL.进来领略下cURL的独门绝技
- Java实现 LeetCode 395 至少有K个重复字符的最长子串
- Java实现 LeetCode 341 扁平化嵌套列表迭代器
- Java实现 LeetCode 187 重复的DNA序列
- Java实现凸包问题
- Spring事务的传播属性
- Linux的文件系统及文件缓存知识点整理
- js高阶函数filter、map、reduce
- numpy.random.randn()与numpy.random.rand()的区别