api响应泛型参数swagger_程序员需要知道的
Knife4jUI,Swagger的增强版
最近我看了⼀个.NET项⽬,惊奇的发现项⽬中不单只集成了SwaggerUI,还集成了SwaggerUI的增强版Knite4jUI。说起Knife4j可能⼤多数.NET程序员都感到陌⽣,因为这个技术最早出现在java,⽽它的.NET版本是最近⼀个⽉才推出的。
在讲解Knife4jUI之前,我们先回顾⼀下Swagger。
什么是Swagger
Swagger 是⼀个基于OpenAPI规范且完整的框架,⽤于⽣成、描述、调⽤和可视化 RESTful 风格的 Web 服务。(OpenAPI规范是RESTful API设计的⾏业标准)
为什么要使⽤Swagger
随着三⼤前端框架的出现(vue、react、anguar),前后端分离的开发⽅式变得越来越流⾏。前端开发者和后端开发者只需要专注⾃⼰擅长的领域即可。但这种开发⽅式存在⼀个问题,就是如何保证接⼝⽂档是最新的。在过去我们常常使⽤Word的形式提供接⼝⽂档,在接⼝对接的过程当中经常会出现接⼝⽂档与实际不⼀致的情况,前端开发⼈员看到的不是最新的接⼝⽂档,⽽后端开发⼈员需要花⼤量的时间和精⼒去维护最新的⽂档。为了解决这个问题,Swagger应运⽽⽣。
什么是Knife4jUI
在讲解.NET的Knife4jUI之前,我先讲讲java的Knife4j,
knife4j是为Java MVC框架集成Swagger⽣成Api⽂档的增强解决⽅案,前⾝是swagger-bootstrap-ui。
asp查看源码配置ui取名knife4j是希望它能像⼀把⼔⾸⼀样⼩巧、轻量、并且功能强悍,也是希望把它做成⼀个为Swagger接⼝⽂档服务的通⽤性解决⽅案,不仅仅只是专注于前端Ui前端。
java有的东西,.NET 怎么可以缺少。最近⼀个⽉,. NET也推出了Knife4j UI,⼀个增强版本的swagger ui 库:
IGeekFan.AspNetCore.Knife4jUI。
knife4j
knife4j-vue-v3(不是vue3,⽽是swagger-ui-v3版本)
Swashbuckle.AspNetCore
Swashbuckle.AspNetCore.Swagger
Swashbuckle.AspNetCore.SwaggerGen
安装包到ASP.NET Core应⽤程序
通过包管理⼯具安装 :Install-Package IGeekFan.AspNetCore.Knife4jUICLI命令⾏安装 : dotnet add pa
ckage IGeekFan.AspNetCore.Knife4jUI
服务配置(ConfigureServices),CustomOperationIds和AddServer是必须的。
services.AddSwaggerGen(c =>    {        c.SwaggerDoc("v1",new OpenApiInfo{Title = "API V1",Version = "v1"});        c.AddServer(new OpenApiServer()    中间件配置(Configure)
app.UseSwagger();app.UseKnife4UI(c =>{    c.RoutePrefix = ""; // serve the UI at root    c.SwaggerEndpoint("/v1/api-docs", "V1 Docs");});app.UseEndpoints
IGeekFan.AspNetCore.Knife4jUI项⽬源码
如果想深⼊了解IGeekFan.AspNetCore.Knife4jUI。
全局参数设置
刚才设置了全局请求头参数,所以之后的每个接⼝的请求头都会⾃动带上之前设置的值。
⽂档信息
参数说明: 包括参数名称、参数说明、请求类型、是否必须、数据类型、schema 响应状态:包括 状态码、说明、schema
响应参数:包括参数名称、参数说明、类型、schema
相应⽰例:包括 返回json格式的响应⽰例,包括对应的字段说明
⽂档信息的详细程度已经到了令⼈发指的程度。
接⼝调试
可以对请求参数的JSON进⾏语法校验,真的很⽜B
Swagger Models
Swagger Models能够清晰的看到,每⼀个model的对应属性的名称、类型、说明、schema等信息,甚⾄连必填项都可以标红(对应C#的Required特性)。
离线⽂档
Knife4j提供导出4种格式的离线⽂档(HtmlMarkdownWordPdf)
Markdown展⽰出的格式⾮常⼯整,看起来特别⾃然。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。