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

背景

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

bf30a64e46a4c099d0eadcc8160feb1c.png

swagger

swagger的github地址

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

Step1

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

383f9f5a90dc7fb9540dee2bf30143ac.png

项目骨架图

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

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

6cbdf349b9416a5822197508e57e4832.png

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

a7a6f76ad04708362c3895a38408629b.png

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

87c94079f9c092d889fbd3bc1af4864f.png

Step2

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

350c6104937f3aa0e1077b800371b6d8.png

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

1f68ba287421accf401a1c56d9142406.png

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

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

34f445b49f9f73c9bf293d24e00611df.png

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

Step3

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

baa9df20dbf4b47e4ce66913562036c9.png

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

e554a68554035ec9b080c1db11ab82ea.png

不报错的swagger页面

Step4

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

8be549597122211e716e683f03fdbf8f.png

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

8ea6235e76b676702eee1f6179c8c2e4.png

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

93c8fad56f614a902c0d579526a1ee3d.png

小结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571598.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cif是目的港交货吗_刚接手出口业务,搞不懂FOB? CIF? 为你科普→

Export专用名词辨析01 名词辨析#FOBFOB(Free On Board),含义是装运港船上交货,指卖方在合同规定的装运港负责将货物装上买方指定的船上,并负责货物装船之前的一切费用和风险,以及办理出口通关的相关事宜及费用,所以在实…

中的数组怎么转成结构体_传说中的“衡水体”应该怎么练?

传说中的“衡水体”应该怎么练?我也不知道,哈哈哈哈哈哈。因为我之前关于衡水体的回答最高赞评论说我这个不是衡水体……随便写的之前的回答所以,这篇文章纯属交流分享,同时枯燥无味,可能适合觉得自己书写不好看的高中…

windows 显示苹果分区_基准测试数据显示苹果M1运行Windows的表现比微软自家硬件好上近一倍...

根据最新的基准测试,苹果M1运行 "Windows 10 on ARM "的速度比微软自家的硬件快了近2倍。更新后的基准数据显示,苹果M1上的Windows 10比Surface Pro X快得多,这还是配备了基于骁龙8cx的处理器的Surface Pro X原生运行该操作系统的环…

python 发邮件_Python发邮件告别smtplib,迎接zmail

之前介绍过smtplib发邮件代码,直到今天仍有人在这里遇到问题。而且代码复杂,解释起来很麻烦,今天给大家介绍一个新的发邮件方法——zmailzmail的优势自动填充头信息将一个字典映射为email,构造邮件相当于构造字典自动寻找邮件服务…

重复数据_MongoDB 自动过滤重复数据

摘要:使用 update_one() 方法而不是 insert_one() 插入数据。相信你一定有过这样的经历:大晚上好不容易写好一个爬虫,添加了种种可能出现的异常处理,测试了很多遍都没有问题,点击了 RUN 开始正式运行 ,然后…

多个canvas画布合并_canvas的基础入门

nvas是定义在浏览器上的画布。它不仅仅是一个标签元素更是一个编程工具是一套编程的接口。利用它可以开发出很多东西,比如动画,游戏,动态的图表等富有变现力和感染力的应用。还可以开发出绚丽的3D动态效果。接下来我们一起学习!一…

工业机器人专业展板图片_南充职业技术学院工业机器人专业线下课程开展情况...

2020年5月18日,南充职业技术学院线下课程已全面展开,下面是工业机器人技术专业的开课情况。历时4个多月的假期,即将开课。在开课前两天,我司专业教师到学院检查维护机器人设备,以保障学生们能够正常使用工业机器人相关…

vmware挂载san存储_细述企业级存储NAS和SAN差异

常见服务器磁盘类型SAS:容量小,300G,600G,价格贵SATA:容量大,4T,不支持热插拔,价格低假SAS:容量大,支持热插拔,价格低,(就是SAS接口的…

蓝牙核心技术了解(蓝牙协议、架构、硬件和软件笔记)

声明:这篇文章转载beautifulzzzz笔记,网址:http://www.cnblogs.com/zjutlitao/,其中比较多的受益于xubin341719的蓝牙系列文章,同时还有其他网上作者的资料。由于有些文章只做参考或统计不足,如涉及版权请在…

初中英语多词性单词怎么办_高考英语阅读理解生僻单词太多怎么办?十大招数帮到你...

英语阅读理解生僻单词太多怎么办?今天,胡老师告诉你猜词十大招数,帮助同学们英语考试拿高分。01 构词法阅读中常常会遇到一些由熟悉的单词派生或合成的新词。掌握构词法对猜测词义很有帮助。如:unforeseeable.这个词,可…

springboot jwt token前后端分离_基于Spring Boot+Spring Security+JWT+Vue前后端分离的开源项目...

一、前言最近整合Spring BootSpring SecurityJWTVue 完成了一套前后端分离的基础项目,这里把它开源出来分享给有需要的小伙伴们功能很简单,单点登录,前后端动态权限配置,前端权限精确到 按钮 级别,后端权限精确到 url …

springboot 微服务_使用 Docker 部署 Spring Boot微服务

Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下。首先构建一个简单的 Spring Boot 项目,然后给项目添加 Docker 支持,最后对项目进行部署。一个简单 Sp…

sql 除以_刷完这些SQL练习题,简单查询就熟能生巧了

练习题:SQLZOO表:(图片未显示全部列)(1)SELECT basics:(简单查询)SELECT basics/zh​sqlzoo.net①The example uses a WHERE clause to show the population of France. …

Tomcat 总体结构

http://threezj.com/2016/06/25/Tomcat%20%E6%9E%B6%E6%9E%84%E6%8E%A2%E7%B4%A2/ Tomcat 架构探索 發表於 2016-06-25 | 前言 花了一个礼拜的时间阅读了 how tomcat works,本文基于此书,整理了一下Tomcat 5的基本架构,其实也没什么多复杂…

sql 存储过程 盲注入_一次非常规 SQL 注入(informixsql)的利用过程

介绍一个客户正在寻找升级他们的思科 UCM 软件,并希望保证他们的实现是安全配置的。在评估期间,我们在 Cisco UCM 管理员门户中发现了一个经过身份验证的 SQL 注入问题。在大多数情况下,可以使用 SQLMap 或其他工具来自动发现问题。由于我们是…

自定义鼠标指针轨迹_win10鼠标自定义颜色,鼠标属性设置,这样就不眯眼了

电脑用多了,眼睛受不了,这时候就需要各种护眼模式,把画面放大,指针放大,来解决眼睛盯着电脑累的问题了,一不留神发现鼠标指针变大好处多多,下面设置一下win10系统鼠标指针大小、颜色都是默认设置…

mysql linux_linux下mysql下载安装

1、下载地址https://www.mysql.com/downloads/选择community server点击DOWLOAD选择版本,当前选择的5.6版本点击下载mysql-5.6.38-linux-glibc2.12-i686.tar.gz选择no thanks2、安装mysqltar -xvzf mysql-5.6.38-linux-glibc2.12-i686.tar.gzmv mysql-5.6.38-linux…

java代码生成器 快速开发平台 二次开发 外包项目利器 springmvc SSM后台框架源码...

A代码编辑器,在线模版编辑,仿开发工具编辑器,pdf在线预览,文件转换编码B 集成代码生成器 [正反双向](单表、主表、明细表、树形表,快速开发利器)快速表单构建器 freemaker模版技术 ,0个代码不用写&#xff…

php mysql搭建_PHP+MYSQL的搭建_MySQL

现在准备研究下微信的开发,所以要研究下PHP了,但对这个平台还是很陌生的,所以网上找了些资料并测试,现贴出来给大家参考。第一步:我们先下载【PHPStudy 2013】或者最新版本;下载地址: http://do…

锐捷交换机实验案例:vlan间互访的配置与验证

组网需求: 1、如下图所示,某用户内网被划分为VLAN 10、VLAN 20、VLAN 30,以实现相互间的2 层隔离; 2、3 个VLAN 对应的IP 子网分别为192.168.10.0/24 、192.168.20.0/24 、192.168.30.0/24,3 个VLAN 通过3 层核心交换机…