.net core使用swagger

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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表示显示控制器注释

相关文档
最新文档