背景

如果我们之前搞过java web开发,我们应该都知道swagger这个API文档自动生成利器,有了swagger可以方便我们与客户端的联调,基本上是一目了然,swagger支持java,自然它也能支持golang的gin框架,本小节,就花费5分钟的时间,快速整合一下gin和swagger,我们将在上一个分层的gin实战基础上,我们开始整合swagger

swagger

swagger的github地址

https://github.com/swaggo/gin-swagger

Step1

打开我们上一个小节搭建的工程,整体结构图如下图所示

项目骨架图

我们打开goland的一个终端,运行如下命令

go get -u github.com/swaggo/swag/cmd/swag

在沒有报错的情况下,再运行swag init

这个时候你会发现你的项目中多了一个文件夹

Step2

在完成Step1之后,swagger的依赖基本上我们都有了,接下来,我们就要gin对swagger的url映射,或者我们在访问浏览器的时候,我们怎么知道对应请求Swagger页面的URL呢,我们回到我们之前配置映射的地方,如下图所示,我们一开始只有一个对/movie/get/:id的依赖,接下来我们要新增对swagger的映射

修改一下,代码编程如下,这个一般是固定格式,但是我们也要稍微了解一下其中的原理,其实并不复杂,如下代码所示,下面第二处标红的表示,我们多加一个GET映射,以/swagger前缀开头的都交给你ginSwagger.WrapHandler这个处理器处理

好了,到此我们重新运行一下swag init,然后打开浏览器访问如下地址

http://localhost:8080/swagger/index.html

到此为止,我们已经初步看到了swagger的熟悉的页面了,虽然有报错,但这是我们前进的一大步,接下来我们一步步进行润色就可以了

Step3

我们为我们的swagger新增标题和说明,在golang中,我们只需要写一些注解就可以达到上述的效果,我们在main函数中,增加如下的注释和引入一下swagger doc的依赖,如下所示,重新运行swag init

重启项目,再次打开浏览器,再次访问上述网址,我们发现项目不再报错,也可以看到该文档的一些基本信息

不报错的swagger页面

Step4

为/movie/get/:id 新增接口说明,在spring mvc中,我们可以在接口方法上加一些注解,然后在入参和出参上加一些特定注解,说明参数含义,然后swagger就会自动帮助我们变成接口说明,在golang中也是一样,我们再handlers中的各个func上加注释,而不是加注解,也可以完成一样的工作,我们在GetMovieById上加上如下的注释,然后再次运行swag init就可以完成第一个接口说明了

重启系统,然后再次访问浏览器,我们可以看到最后的成果就出来了

并且我们可以成功的在里面请求我们的系统接口了

小结

简而言之,golang版的swagger还是比较易懂好用,并且容易上手的,但是我们每次修改完注释,都要重新swag init重新生成最新的文档说明,这个也是我们要做注意的,下一个小节,我们将完整的编写关于电影数据库的增删改查的功能

gin ip 和 本地访问的结果不一样_golang web开发——gin实战之整合swagger相关推荐

  1. postman post gin 接收不到_golang web开发——gin实战入门

    背景 在之前的一系列golang入门小节中,我们也算管中窥豹,大概了解了一些golang,了解了它的基本语法,在之前的章节中,很多大佬留言或者私信我说,我写的都太过简单,充其量就是一个golang的d ...

  2. gin 如何返回html_Gin(三):与模板配合使用 tmpl,go web 开发最火框架之一

    经过Gin(二):路由Router ,go语言框架学习的学习,已经对 Gin 有了一个初步的认识和了解,对 router 的简单使用也有了一定的掌握,那么今天就来使用 Gin 来渲染出我们的 html ...

  3. Navicat 使用IP连接本地mysql服务提示无权限访问

    博主location访问是可以连接上的 所以只针对IP无法进行访问 由于MySQL默认location进行连接 所以Navicat 使用IP连接本地服务提示无权限访问 两种修改方法:命令和navica ...

  4. Vue项目配置本地访问地址和IP访问地址

    Vue项目配置本地访问地址和IP访问地址 1.在config/index.js配置: dev: {host: '0.0.0.0', } 2.在build/webpack.dev.config.js更改 ...

  5. 关于vue项目本地localhost可以正常访问项目,ip却无法访问项目的解决办法

    关于vue项目本地localhost可以正常访问项目,ip却无法访问项目的解决办法 在进行本地页面调试的时候,地址栏可以输入两种地址来访问页面 http://localhost:8080 http:/ ...

  6. 如何在本地访问远程服务器的jupyter notebook?

    背景 jupyter notebook作为一个非常好用的工具,我们经常会在学习python以及深度学习的时候用到,但是经常我们面临的问题是远程服务器上的jupyter notebook,我们可能在本地 ...

  7. VMWare中CentOS7 设置固定IP且能够访问外网

    最近搭建kubernetes集群环境时遇到一个问题,CentOS7在重启后IP发生变化导致集群中etcd服务无法启动后集群环境变得不可用,针对这种情况,必须要对CentOS7设置固定IP且可以访问外网 ...

  8. 教你如何处理Nginx禁止ip加端口访问的问题

    这篇文章主要介绍了Nginx禁止ip加端口访问的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 Nginx禁止IP加端口访问 使用iptables 限制 ...

  9. 金蝶站点重新输入服务器ip,金蝶KIS客户端和服务器不在同一IP段互相访问

    金蝶KIS客户端和服务器不在同一IP段互相访问 现象:金蝶KIS的服务器在内网192.168.1.*这个网段中,同时在这个网段中我增加一个无线路由器分配的IP段是192.168.2.*:金蝶的客户端就 ...

最新文章

  1. javascript十六进制数字和ASCII字符之间转换
  2. oracle 有则更新,oracle 存在则更新不存在则插入-方案
  3. 【基础算法】常见的ML、DL编程题
  4. 每天一道LeetCode-----判断某棵树是否是二叉搜索树
  5. DataGirdView 编辑项时的验证
  6. [html] 你觉得写Html难吗?难在哪?为什么?
  7. 我的世界java版和基岩版对比_基岩版Beta1.11.0.1发布
  8. LeetCode 669. Trim a Binary Search Tree
  9. 企业微信发布全国远程办公大数据:这些地方的企业最爱交流
  10. 图片类关于实现图片剪切功能的相关类的学习心得
  11. azure虚拟服务器,虚拟机系列
  12. 机器学习实战——KNN及部分函数注解
  13. Git 连接码云 上传本地项目
  14. SSRS报表服务随笔(rdl报表服务)-报表结构与样式
  15. python单词表首字母排序_python3 列表排序(字母顺序排序、字母相反顺序排序和倒序)...
  16. hdu2028java-Lowest Common Multiple Plus
  17. 局域网电脑互访的设置大全
  18. MySQL语句-查看当前数据库有哪些表(SHOW TABLES)
  19. 用Qt在Iinux上开发一个带UI的工业控制系统,应该用C++还是QML
  20. Windows 下设置自定义域名解析到指定 IP

热门文章

  1. python基础课程2(看代码看注释)--条件判断|循环|函数|生成器|类
  2. 神经网络反向传导算法
  3. idea 分支管理插件_Git的分支管理常用命令
  4. java lambda sorted_Java8:Lambda表达式增强版Comparator和排序
  5. http通道连接mysql_通过http tunnel连接mysql
  6. python编程题计算矩阵对角线_Python练习题 028:求3*3矩阵对角线数字之和
  7. Python操作文件,报FileNotFoundError: [Error 2] No such file or directory错误
  8. Python中map()函数用法
  9. 实操代码带你理解CSS中的常用选择器(你值得掌握!)
  10. 如何在视图中启用thymeleaf