介绍
swagger使我们在api开发中常用到的技术,其解决了web api文件生成的问题。它具有诸多互动式文件、客户端SDK生成和api可发现性等优点。由于笔者是从事.net core方向的开发,所以咱们就聊一聊在.net core web api的专案中整合swagger或者redoc。
NSwag.NET
本文主要讲的是使用NSwag.NET来将swagger整合到专案中来,包括swagger和redoc,redoc也可以不整合到专案,它可以说是swagger的一个替代品或者说在ui上更加友好一些,而且带有搜寻功能!当然有的朋友可能会使用Swashbuckle.AspNetCore来整合swagger,其实都是可以的。开源地址:
https://github.com/RicoSuter/NSwag
建立专案
笔者使用的是VS2019版本,VS2017类似选择要建立的专案这里我们选择asp.net core web应用程序,然后下一步

专案命名VS2019和VS2017稍有不同

选择型别这里我们选择API,然后.net core版本的话我们选择2.2,你也可以选择3.0,不过目前还是预览版本,可以提前学习

一个简单的专案就建立好了这里的控制器先不急着删掉,我们用它来演示生成的文件

右击专案开启Nuget包管理
搜寻 NSwag.AspNetCore并安装 NSwag.AspNetCore已经包括了生成并提供Swagger规范、SwaggerUI(V2和V3版本)以及Redoc UI

注册NSwag 中介软件asp.net core中中介软件得到了大量的使用,若要使用NSwag,我们就需要在Startup档案中注册中介软件,在 Startup.ConfigureServices 方法中,注册所需的 Swagger 服务
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddSwaggerDocument();
}
启用在 Startup.Configure 方法中,启用中介软件为生成的 Swagger 规范和 Swagger UI 提供服务
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseStaticFiles();
// Register the Swagger generator and the Swagger UI middlewares
app.UseOpenApi();
app.UseSwaggerUi3();
app.UseMvc();
}
启动专案首先我们需要把启动配置档案中的https的方式删除

开启浏览器http://localhost:5000/swagger
然后就是熟悉的文件风格

自定义一些配置在 Startup.ConfigureServices 方法中,传递给 AddSwaggerDocument 方法的配置操作会新增诸如作者、许可证和说明的资讯:
services.AddSwaggerDocument(config =>
{
config.PostProcess = document =>
{
document.Info.Version = "v1";
document.Info.Title = "API";
document.Info.Description = "测试的文件";
document.Info.TermsOfService = "None";
document.Info.Contact = new NSwag.OpenApiContact
{
Name = "Test",
Email = string.Empty,
Url = "https://twitter.com/spboyer"
};
document.Info.License = new NSwag.OpenApiLicense
{
Name = "Use under LICX",
Url = "https://example.com/license"
};
};
});

以上就是Swagger的一些配置,基本上满足了日常开发需求,但是在实际开发过程中,随着API的增多,查询起来相当的不方),那么有没有可以搜寻的办法呢,答案是肯定的,那就是Redoc。
整合redocredoc实际上是一个可以独立的存在,但是为了方便我们可以整合到专案中来,首先修改下静态档案的配置,然后新建一个wwwroot资料夹,新增index.html档案,内容如下
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), "wwwroot")),
RequestPath = "/wwwroot",
});
ReDoc
body {
margin: 0;
padding: 0;
}
开启浏览器http://localhost:5000/index.html,带搜过功能,其实redoc还有不少其他的功能,就不一一介绍了

总结
以上就是在Asp.net core的专案中简单继承Swagger突击Redoc文件的方法,已经基本满足我们日常开发需求,如果有需求的小伙伴可以尝试下了,希望对你有所帮助!PS:通过swagger可以很好地和之前文章中介绍的YAPI界面管理平台无缝衔接,感兴趣的可以看看!
https://www.toutiao.com/i6707557635060662791/





























