开发 web api 的时候,写文档是个痛苦的事情,而没有文档别人就不知道怎么调用,所以又不得不写。
swagger 可以自动生成接口文档,并测试接口,极大的解放了程序员的生产力。
1 安装
通过 NuGet 安装 Swashbuckle。
安装完成后,App_Start 文件夹下会多出一个 SwaggerConfig.cs 文件。
重新生成并发布 api,打开网页 host)
网页显示如下:
2 修改名称和版本号
上图中框出的名称和版本号是可以修改的,打开 SwaggerConfig.cs 文件,找到如下代码:
修改其中的参数,重新发布即可。
3 显示说明
swagger 可以读取代码中的注释,并显示在网页上。如此一来,我们只需要在代码中将注释写好,就可以生成一份可供他人阅读的 API 文档了。
swagger 是通过编译时生成的 xml 文件来读取注释的。这个 xml 文件默认是不生成的,所以先要修改配置。
第一步: 右键项目 -> 属性 -> 生成,把 XML 文档文件勾上。
第二步: 添加配置 在 SwaggerConfig.cs 文件中添加配置如下:
注意:发布的时候,XML 文件不会一起发布,需要手动拷到发布目录下。
4 显示控制器注释及汉化
默认是不会显示控制器注释的,需要自己写。 在 App_Start 中新建类 ,代码如下:
另外,新建 swagger.js 文件并将其设置成 嵌入的资源,这个文件的作用就是显示控制器注释及汉化。js 代码如下:
在 SwaggerConfig.cs 添加如下配置:
5 路由相同,查询参数不同的方法
在实际的 ASP.NET Web API 中,是可以存在 路由相同,HTTP 方法相同,查询参数不同 的方法的,但不好意思,swagger 中不支持,并且会直接报错。
如下代码,
报错: Multiple operations with path 'api/users' and method 'GET'.
可以在 SwaggerConfig.cs 添加如下配置:
此配置的意思是,当遇到此种情况时,取第一个方法展示。
这可以避免报错,但多个方法只会在 swagger 中展示一个。治标不治本,不推荐。所以唯一的解决方案就是设置成不同的路由。不知道这个问题在之后的版本中会不会修复。
6 忽略 Model 中的某些字段
如下图,新建用户时,后台需要一个 User 类作为参数。点击右侧的 ,可以显示 User 类的属性及注释。
但是,有些字段其实是无需调用者传递的。例如 ,调用者无需知道这些字段的存在。
给这些属性标记上 特性,swagger 中不再显示了。
当然这种做法也是有缺点的,因为 web api 在返回数据时,调用的默认序列化方法也是 Newtonsoft.Json 序列化。
7 传递 header
调用 api 时,有些信息是放在 HTTP Header 中的,例如 。这个 swagger 也是支持的。
新建一个特性:
新建一个类代码如下:
这段代码就是告诉 swagger,如果遇到的方法上标记了 特性,则添加一个名为 的参数在 中。
最后需要在 SwaggerConfig.cs 中注册这个过滤器。
效果如下:
8 出错时的 HTTP 状态码
我们在方法中返回一个 400
可是,swagger 中返回的状态码却是 0。
这是因为 指定了 JSON 格式,但传入的 又不是 JSON 格式的。
将 改为 JSON 格式,或者将 改成 就可以了。
到此这篇swagger文档地址(swagger 文档)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/75965.html