前言

随着前后端分离开发模式的流行,接口对接、联调成为常事,前端同事会经常问:我需要调哪个接口?这个接口数据格式是啥?条件都传啥? 对于一些紧急接口可能会采取沟通对接,然后补文档,其他的都会回一句:看文档。 那难道要一边开发一边写文档吗?早些年是这样的,但对于后端同事就很不自在了,代码敲的正起劲,突然又要去写文档(不然前端同事会时刻催或是来沟通),这样效率显然不是很高。而Swagger就能很舒服的解决问题(当然也有其他方式,挑一个比较火的),用Swagger大概会有以下好处:

  • 良好的可视化界面,在线查看即可(可自定义);

  • 前后端对接方便,避免边撸代码边写文档;

  • 可以直接进行API运行,提高自测效率;

  • 文档生成方便,结合第三方API接口管理平台(YApi等)轻松生成文档(软件文件备案需要好多文档的)。不写文档,更多时间撸代码~~~

正文

直接上案例演示,老规矩,还是熟悉的WebApi项目:

运行演示:

如果注册组件时设置的名称和注册中间件时设置的json地址中的名称不一样,就会报以下错误:

轻松三步走完成Swagger的集成:安装包->注册组件->注册中间件;

但是运行起来的时候还需要手动输入Url地址,不太友好,希望运行起来就直接是Swagger的页面,如下优化一下代码:

这样就完事了吗? 当然没有,这样前端同事还得时刻找你问:我要用哪个接口?接口参数的字段都是啥意思?因为接口列表虽然展示出来了,但是不知道接口功能,传入的条件参数字段分别代表什么意思。

来,加个注释解决烦恼:

新加的用户接口已经自动列出来了,但是我们在代码中已经注释,Swagger界面还是没有显示,那是因为还没有指定Swagger的注释来源呢。这里先注意一个问题,如果Action不显示指定HttpMethod(如:HttpGet、HttpPost等),Swagger会报错,如下:

来,我们的注释还没显示出来呢,继续往下看看↓↓↓

  1. 先针对API项目和Model项目配置生成项目对应的xml文件;

  2. 增加代码,分别指定配置文件解析注释,然后运行演示;

这样就已经完成在Swagger在线文档中添加文字说明了,解决前后端对接的麻烦事。但是在编译运行的时候,会出现很多警告,提示没有注释(CS1591):

这是因为生成xml文件要求都需要注释导致,作为程序员的洁癖,当然不允许这种情况发生,小红框标识提示代码为1591,我们在项目右键->属性->生成界面中增加该代码即可,如下:

再编译运行一下,是不是警告没了,整洁就是舒服~~~~~

这里有个小细节,在配置xml读取注释时,如果不使用第二个参数,默认控制器的注释是不管用的,这里就不运行演示了,代码说明如下:

Swagger的集成使用差不多了,后续会在认证的时候做扩展。

对于Swagger的页面,开发已经是绝对能满足了,但总有一些审美比较严格,或是有一些页面定制化的需求,所以自定义页面就避免不了;小伙伴会发现,项目中只是安装了Swagger的包,没有对应的静态文件,那是怎么访问的呢?嗖的一下,灵光一闪,小伙伴一定想到之前文件系统中说到的嵌入文件(编译到程序集中的文件),默认情况下,Swagger的相关文件都是嵌入文件,所以在项目中看不到。自定义页面有三种方式:

  • Swagger的页面是前后端分离的,可直接下载下来扩展;

  • 直接写一个主页页面,然后注入相关JS,最后将其改为嵌入文件,显示指定加载页面;

  • 通过Swagger默认提供的API,注入相关的Js文件进行页面自定义;

相对来说,第一种比较清晰,而且代码与后端代码没有啥关系,所以这里就以第一种为例进行演示,其余两种留给小伙伴探索探索。

大概步骤:

  1. 先下载Swagger前后端项目文件(下载地址:https://github.com/swagger-api/swagger-ui/);

  2. 将下载下来的dist中文件拷贝到WebApi中的wwwroot目录;

  3. WebApi开启静态文件处理能力,即注册静态文件中间件;

  4. 修改静态文件(文件在本地,想怎么搞就怎么搞);

  5. 运行看效果:

这里只是提供思路,样式不好看别说我(小伙伴不会说,对不对),美化只是时间问题嘛,自定义界面就是这么简单。

补充两个小技巧:

  • 通常有一些接口已经过时,但有不能马上废弃,可以给一个提示;加[Obsolete]特性代表其已经废弃,但还可以用,有一个替换的过渡期。

  • 有时候有些接口不想显示在Swagger文档中,可以加[ApiExplorerSettings(IgnoreApi = true)]

总结

看到这篇小伙伴可能会好奇,这么简单的集成,为什么要长篇大论的说那么多。其实我是站在我之前学习的角度,想让每个用法都清楚的表达出来,在使用的时候也知道为什么会这样,所以后续的文章会循序渐进,不会一下跳到Docker部署,网关使用之类的主题,如果没有学过Docker,看着文档也很懵,就算照着案例做出来,收获也不是很大;别急,该说的都会一一到来,同时我也会不断学习,争取分享更多技术知识。下一节说说Jwt认证集成使用。

一个被程序搞丑的帅小伙,关注"Code综艺圈",识别关注跟我一起学~~~

撸文不易,莫要白瞟,三连走起~~~~

swagger 上传文件 参数_跟我一起学.NetCore之Swagger让前后端不再烦恼及界面自定义...相关推荐

  1. 跟我一起学.NetCore之Swagger让前后端不再烦恼及界面自定义

    前言 随着前后端分离开发模式的流行,接口对接.联调成为常事,前端同事会经常问:我需要调哪个接口?这个接口数据格式是啥?条件都传啥? 对于一些紧急接口可能会采取沟通对接,然后补文档,其他的都会回一句:看 ...

  2. swagger 上传文件 参数_Swagger发送body和formData参数

    我正在使用Swagger 2.0,我有一个问题是发送多个帖子参数 . 我有一个招摇错误 Operation cannot have a body parameter and a formData pa ...

  3. .Net Core小技巧 - 使用Swagger上传文件

    前言 随着前后端分离开发模式的普及,后端人员更多是编写服务端API接口.调用接口实现文件上传是一个常见的功能,同时也需要一个选择文件上传的界面,可以编写前端界面上传,可以使用Postman.curl来 ...

  4. python fabric上传文件夹_通过python的fabric包完成代码上传部署(简单版)

    首先是安装fabric包pip install fabric fabric常用参数 -l : 显示定义好的任务函数名 -f : 指定fab入口文件,默认入口文件名为fabfile.py -H : 指定 ...

  5. nginx 上传文件漏洞_文件上传漏洞小结

    1 概念 上传文件时,服务器端脚本语言,未对上传的文件进行严格的验证和过滤,就有可能上传恶意的脚本文件,从而控制整个网站,甚至是服务器. 2 危害 • 网站被控制,对文件增删改查,执行命令,链接数据库 ...

  6. nginx 上传文件漏洞_文件上传漏洞,解析漏洞总结

    文件上传漏洞.解析漏洞总结 1.文件上传漏洞是什么 文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力.常见场景是web服务器允许用户上传图片或者普通文本文件 ...

  7. chrome浏览器上传文件延迟_扫描识别工具Dynamic Web TWAIN使用教程:移动浏览器捕获(下)...

    本篇文章将继续上一篇文章为大家介绍Dynamic Web TWAIN关于移动浏览器捕获的使用教程. 步骤4 首先尝试使用移动浏览器页面 此页面适用于桌面浏览器和移动浏览器,在桌面Chrome中,如下图 ...

  8. ftp 上传文件夹_命令行连接FTP服务器

    Windows下: 打开命令行窗口,输入 ftp,进入ftp命令模式: 输入 open ip地址 端口,进入ftp服务器,如open 172.16.3.77 2121.如下图: 输入Windows下的 ...

  9. chrome浏览器上传文件延迟_谷歌Chrome上传文件未响应的解决办法

    [摘要] 这几天笔者在使用Chrome的时候遇到一个令人蛋疼的问题:使用Chrome上传文件会未响应,而这个锅竟然是搜狗输入法要背的. 谷歌Chrome可以说是目前最好用的浏览器之一了,而且Chrom ...

  10. nginx 上传文件漏洞_浅谈文件上传漏洞(其他方式绕过总结)

    前言 上一篇文章简单的介绍了绕过客户端检测,现在总结一下其他方式绕过. 正文 1.1 服务端MIME类型检测绕过 检测原理:用户上传文件时,服务器会获取这个文件的MIME值,与事先设置好的进行比对,如 ...

最新文章

  1. MyISAM与InnoDB区别
  2. System.Object 基类
  3. C语言估算数学常量e,c语言常量的正确表示方法有哪些
  4. 2018年终总结--最美的期待
  5. Oracle命令--alter 操作
  6. 发布react项目到linux服务器,nginx上部署react项目的实例方法
  7. 西门子em235模块的功能_图文讲解PLC模拟量模块与传感器接线方法和注意事项
  8. linux下Zlib的安装与使用
  9. 你不知道的JS之作用域和闭包(二)词法作用域
  10. 使用PHP与PostgreSQL开发的相关配置
  11. Zmodem协议由浅入深
  12. 关于 idea 快捷键 alt + f7 无法使用的一些尝试
  13. iPhone Xs和iPhoneXs max 的区别 哪个好
  14. 开心庄园html的代码,HTML第五章(示例代码)
  15. CCTV十集大型纪录片《华尔街》高速下载地址
  16. 微信小程序—火车票查询
  17. 当年校招时,我就死在这个问题上...
  18. iOS支付宝、微信支付
  19. NP路由器——OE要点整理
  20. powershell入门教程-v0.3版

热门文章

  1. 学习WPF/Silverligter网站及资源
  2. RedHat Linux 企业5 oracle 10g
  3. QLineEdit用正则表达式限制double类型输入,double转为9位小数的字符串
  4. 使用npm-check-updates模块升级插件
  5. JDK动态代理的使用,以及可以解决哪些问题和优点,什么是动态代理
  6. python循环语句c次_python循环语句
  7. DOM学习之获取元素及事件基础(附实例、源码)
  8. 完整的vue-cli3项目创建过程以及各种配置
  9. web应用的跨域访问解决方案
  10. ssh 遍历IPS 进行连接