.net core使用swagger
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Core 3.0使用Swagger
一、什么是Swagger
随着技术的不断方法,现在的网站开发基本都是使用前后端分离的模式,这样使前端开发者和后端开发者只需要专注自己擅长的即可。但这种方式会存在一种问题:前后端通过API 接口的方式进行调用,接口文档的好坏可以决定开发的进度。以前如果使用Word的形式提供接口文档,或多或少的都会存在各种问题。前端抱怨说后端给的接口文档与实际情况不一致。而后端开发人员又觉得编写以及维护接口文档很费精力,文档经常不能及时更新,导致前端看到的还是旧的接口文档。这时候就需要使用Swagger了。
那么什么是Swagger呢?Swagger是最流行的API开发工具,它遵循了OpenAPI规范,可以根据API接口自动生成在线文档,这样就可以解决文档更新不及时的问题。它可以贯穿于整个API生态,比如API的设计、编写API文档等。而且Swagger还是一种通用的、与具体编程语言无关的API描述规范。
有关更多Swagger的介绍,可以参考Swagger官网,官网地址:https://swagger.io/
二、 Core中使用Swagger
这里使用最新的 Core 3.0创建WebAPI接口。关于如何创建WebAPI这里不在描述。创建后的WebAPI项目结构如下:
1、添加Swagger
直接在NuGet里面搜索Swashbuckle.AspNetCore包进行安装:
2、添加服务
在Startup类的ConfigureServices方法里面注入服务:
public void ConfigureServices(IServiceCollection services)
{
// 添加Swagger
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "API Demo", Version = "v1"});
});
services.AddControllers();
}
3、添加中间件
在Startup类的Configure方法里面添加Swagger有关的中间件:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) {
if (env.IsDevelopment())
{
eDeveloperExceptionPage();
}
// 添加Swagger有关中间件 eSwagger();
eSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "API Demo v1");
});
eRouting();
eAuthorization();
eEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
4、添加控制器
新建一个控制器,里面包括基础的增删改查方法:
using Microsoft.AspNetCore.Mvc;
namespace SwaggerDemo.Controllers
{
[Route("api/student")]
[ApiController]
public class StudentController : ControllerBase {
[HttpGet]
public string Get() {
return"Tom";
}
[HttpPost]
public void Post()
{
}
[HttpPut]
public void Put()
{
}
[HttpDelete]
public void Delete()
{
}
}
}
运行程序,修改一下url地址:
http://localhost:5000/swagger/index.html 如下图所示:
这样就可以看到接口了。但这样还不是我们最终想要的结果,我们想知道每个方法的注释和方法参数的注释,这就需要对接口做XML注释了。首先安装
Microsoft.Extensions.PlatformAbstractions包:
然后修改ConfigureServices方法,增加下面的方法:
public void ConfigureServices(IServiceCollection services)
{
#region添加Swagger
services.AddSwaggerGen(options =>
{
options.SwaggerDoc("v1",new OpenApiInfo { Title = "My API", Version = "v1" });
// 获取xml文件名
var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
// 获取xml文件路径
var xmlPath = bine(AppContext.BaseDirectory, xmlFile);
// 添加控制器层注释,true表示显示控制器注释