Hertz 整合swagger

SpringBoot集成Swagger2登录功能和安全认证_swagger 设置登录验证 创建拦截器 SwaggerInterceptor。新建 Swagger2Config。 阅读详情

文章目录

    • Swagger
      • 安装
      • 使用用法
      • 项目demo
      • Swagger注释用法
        • 通用API信息
      • swag命令行参数
      • swagger路由配置

Swagger

安装

go get 安装可执行文件需要配合 GOPATH 模式工作。
go get github.com/swaggo/swag/cmd/swag
因为从 Go 1.17 开始,在 go mod 模式下通过 go get 下载对应库文件将无法自动编译并安装到 $GOPATH/bin 的路径, 所以不再推荐用 go get 来安装可执行文件的方式。可以使用 go install来代替。

go install github.com/swaggo/swag/cmd/swag@latest

使用用法

  1. 在你的 API 源代码中添加注释。
  2. 在你的 Go 项目的根目录下运行 Swag (例如 ~/root/go-project-name),Swag 会解析注释并在 ~/root/go-project-name/docs 目录下生成必要的文件 (docs 文件夹和 docs/doc.go)。
    swag init
  3. 通过运行以下命令在工程中下载 hertz-swagger :
go get github.com/hertz-contrib/swagger
go get github.com/swaggo/files

并在你的代码中引用如下代码:

import "github.com/hertz-contrib/swagger" // hertz-swagger middleware
import "github.com/swaggo/files" // swagger embed files

效果
在这里插入图片描述

项目demo

使用过程
使用 hertz-swagger 规则为 api 和主函数添加注释,如下所示:
使用 swag init 命令来生成文档,生成的文档将被存储在docs/目录下。
编译运行你的应用程序,之后在 http://localhost:8888/swagger/index.html,可以看到 Swagger UI 界面。

完整代码

package main

import (
   "context"

   "github.com/cloudwego/hertz/pkg/app"
   "github.com/cloudwego/hertz/pkg/app/server"
   "github.com/hertz-contrib/swagger"
   _ "mystudy/docs" //该项一定要配置,否则会出现访问404
   swaggerFiles "github.com/swaggo/files"
)

// PingHandler 测试 handler
// @Summary 测试 Summary
// @Description 测试 Description
// @Accept application/json
// @Produce application/json
// @Router /ping [get]
func PingHandler(c context.Context, ctx *app.RequestContext) {
	ctx.JSON(200, map[string]string{
		"ping": "pong",
	})
}

// @title HertzTest
// @version 1.0
// @description This is a demo using Hertz.

// @contact.name hertz-contrib
// @contact.url https://github.com/onewcode

// @license.name Apache 2.0
// @license.url http://www.apache.org/licenses/LICENSE-2.0.html

// @host localhost:8888
// @BasePath /
// @schemes http
func main() {
	h := server.Default()

	h.GET("/ping", PingHandler)

	url := swagger.URL("http://localhost:8888/swagger/doc.json") // The url pointing to API definition
	h.GET("/swagger/*any", swagger.WrapHandler(swaggerFiles.Handler, url))

	h.Spin()
}

访问http://localhost:8888/swagger/index.html

效果
在这里插入图片描述

Swagger注释用法

通用API信息

示例 celler/main.go

注释说明示例
title必填 应用程序的名称。// @title Swagger Example API
version必填 提供应用程序API的版本。// @version 1.0
description应用程序的简短描述。// @description This is a sample server celler server.
tag.name标签的名称。// @tag.name This is the name of the tag
tag.description标签的描述。// @tag.description Cool Description
tag.docs.url标签的外部文档的URL。// @tag.docs.url https://example.com
tag.docs.description标签的外部文档说明。// @tag.docs.description Best example documentation
termsOfServiceAPI的服务条款。// @termsOfService http://swagger.io/terms/
contact.name公开的API的联系信息。// @contact.name API Support
contact.url联系信息的URL。 必须采用网址格式。// @contact.url http://www.swagger.io/support
contact.email联系人/组织的电子邮件地址。 必须采用电子邮件地址的格式。// @contact.email support@swagger.io
license.name必填 用于API的许可证名称。// @license.name Apache 2.0
license.url用于API的许可证的URL。 必须采用网址格式。// @license.url http://www.apache.org/licenses/LICENSE-2.0.html
host运行API的主机(主机名或IP地址)。// @host localhost:8080
BasePath运行API的基本路径。// @BasePath /api/v1

更多请参考 https://github.com/swaggo/swag/blob/master/README_zh-CN.md

swag命令行参数

用参数运行 Swag (全部参数可以通过运行 swag init -h 查看)。

swag init --parseDependency --parseInternal --parseDepth 5 --instanceName "swagger"
选项默认值描述
parseInternalfalse解析内部依赖包。
parseDependencyfalse解析外部依赖包。
parseDepth100解析依赖包深度,如果你知道解析结构的深度,推荐使用这个参数,swag 命令的执行时间会显著减少。
instanceName“swagger”swagger 文档的实例名称。如果要在一个 Hertz 路由上部署多个不同的 swagger 实例,请确保每个实例有一个唯一的名字。

swagger路由配置

你可以使用不同的配置选项来配置 Swagger。

func main() {
	h := server.Default()

	h.GET("/ping", PingHandler)

	url := swagger.URL("http://localhost:8888/swagger/doc.json") // The url pointing to API definition
	h.GET("/swagger/*any", swagger.WrapHandler(swaggerFiles.Handler, url, swagger.DefaultModelsExpandDepth(-1)))
	h.Spin()
}
选项类型默认值描述
URLstring“doc.json”指向 API 定义的 URL
DocExpansionstring“list”控制操作和标签的默认扩展设置。它可以是 list(只展开标签)、full(展开标签和操作)或 none(不展开)。
DeepLinkingbooltrue如果设置为 true,可以启用标签和操作的深度链接。更多信息请参见深度链接文档。
DefaultModelsExpandDepthint1模型的默认扩展深度(设置为 -1 完全隐藏模型)。
PersistAuthorizationboolfalse如果设置为 true,则会持久化保存授权数据,在浏览器关闭/刷新时不会丢失。
Oauth2DefaultClientIDstring“”如果设置了这个字段,它将用于预填 OAuth2 授权对话框的 client_id 字段。
Spring Boot 集成 Swagger 并实现认证保护 以上就是 Spring Boot 项目中集成 Swagger 并实现基于 JWT 的认证保护的步骤。这种方式不仅能够提高 API 的开发效率,还能够保证 API 的安全性。 阅读详情

相关推荐

swagger开启身份认证

swagger开启身份认证,解决未授权登录、敏感信息泄露等漏洞。

【DockerCE】使用docker配置和运行HertzBeat

HertzBeat是一款免Agent的监控平台,拥有强大自定义监控能力,可以对应用服务、数据库、中间件、操作系统、云原生等进行监控,配置告警阈值,以及告警通知(邮件微信钉钉飞书)。关于这个软件的介绍,我这里就不做过多的介绍了,感兴趣的可以去官网(https://hertzbeat.com/docs)去详细了解下。HertzBeat将监控历史数据存储在时序数据库里面,官方文档给出了两款兼容的时序数据库软件,分别是IoTDB和TDengine,这里我使用的是TDengine。4)操作系统资源使用监控。

cnskylee的博客 6978

Unity四部曲(核心)

需要先改成Cube复杂的展开留到unity进阶再说。

ultraman1234566的博客 2797

基于golang的swagger超贴心、超详细使用指南【有很多坑】

Swagger 相关的工具集会根据 OpenAPI 规范去生成各式各类的与接口相关联的内容,常见的流程是编写注解 =》调用生成库-》生成标准描述文件 =》生成/导入到对应的 Swagger 工具。 安装 因此接下来第一步,我们要先安装 Go 对应的开源 Swagger 相关联的库,在项目 blog-service 根目录下执行安装命令,如下: $ go get -u github.com/swaggo/swag/cmd/swag $ go get -u github.com/swaggo/gin-swagg

【阿冰】 2万+

一文讲清CAN和CANFD的区别

本文将从技术原理、协议特性到应用场景,深度解析两者的核心差异。

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 3204

保姆级教程:用Labelme标注车辆关键点,并一键转成YOLOv8-pose训练格式

本文提供了一份详细的车辆底盘关键点标注教程,从使用Labelme进行标注到一键转换为YOLOv8-pose训练格式的全流程指南。特别针对工业检测和自动驾驶场景,分享了标注规范、格式转换脚本及常见问题解决方案,帮助开发者高效准备训练数据并优化模型性能。

weixin_27419879的博客 306

【监控】Hertzbeat在docker的安装与部署

HertzBeat赫兹跳动是一个拥有强大自定义监控能力,无需 Agent 的开源实时监控告警系统。集 监控+告警+通知 为一体,支持对应用服务,数据库,操作系统,中间件,云原生,网络等监控,阈值告警通知一步到位,只需在浏览器配置YML就能使用这些协议去自定义采集任何想要的指标。拥有更自由化的阈值规则(计算表达式),邮件 Discord Slack Telegram 钉钉 微信 飞书 短信 Webhook 等方式及时送达。

锥栗的博客 3929

【Python机器学习】零基础掌握RFECV特征选择

通过应用算法,有效地识别了影响购买意愿的关键特征(浏览时长和点击数)和历史货币流通的主要因素(年代、人口和货币流通量)。这样的特征选择不仅提高了模型的解释能力,还可能用于电商推荐系统和历史研究的优化。优点总结,这种方法可以高效地找出对目标变量有最大影响的特征,进而可以用于各种实际应用场景,如电商推荐和历史研究。优点名称对应描述说明高解释性易于理解哪些特征最为重要泛化性能强通过交叉验证提高模型的稳健性应用场景多样可用于电商、金融、历史研究等多个领域。

Mr数据杨 1993

易扣AI (Go + CloudWeGo) 企业级AI智能体项目教程 第1章:项目环境配置与依赖整合

在这一章,我们将从零开始创建一个企业级项目。在本章的开始,要是有小伙伴担忧自己只会后端,不会前端怎么办,别担心,关于前端的代码可以直接克隆仓库复制前端代码到自己的项目中,但是博主自己的前端代码有大部分都是通过vibe coding 生成的,大多都没有什么技术含量,该教程主要教导大家如何使用vibe coding 生成质量好的代码,所以在教程中我并没有太过关注前端的教学。在企业级项目中,配置管理是非常重要的一环。我们需要定义清晰的配置结构体来管理各种配置信息,如数据库连接、服务器端口、API密钥等。

2303_81266504的博客 432

SolidWorks_模具设计5_分型线生成

分型线是模具设计的核心要素,直接影响产品质量、脱模可行性和制造成本。本文系统介绍了分型线生成技术,包括三种核心算法:基于凸包的方法适用于简单几何,可见性分析处理复杂曲面,曲率特征优化则能找到自然分界。文章提供了完整的Python实现示例,涵盖点云投影、网格处理和分型线评估等关键技术。通过理解这些原理和方法,工程师可以更高效地设计出满足外观要求、易于加工的分型线方案,显著提升模具设计质量和效率。

H17853509096的博客 178

SAP物料主数据归档详解(物理删除)

顾问们的回答肯定的统一的不能,只能打上删除标记。物料设置好需要删除的物料号这里我们需要删除的物料是AG88,其中,若不选“考虑无删除标记的物料”,需要将需要归档的物料MM06打删除标记。平时在操作系统过程中经常会不小心创建出很多无用的物料主数据,但是系统只能通过MM06打上删除标记,但是物料最终在系统中还是可以查询到的。6、执行已设置变式的归档程序,执行完毕,点下图中的“Job”,每次执行完归档程序会产生两条作业。然后设置好开始的参数和假脱机的参数,三个都是绿灯就可以执行归档的操作,物理上删除物料主数据。

我小时候很黑的博客 5523

Hertz自学自讲(一)

既然是Golang的框架,就需要准备一个 Go语言 开发环境。所以我们可以看到 Hertz 框架 启动 HTTP 服务特别容易,接下来我们就来详细地学习一下 Hertz 框架。运行示例代码【这里是因为运行环境在hertz_demo目录里,根据自己的目录路径填写】文件【这里是因为运行环境在hertz_demo目录里,根据自己的目录路径填写】但是其实我们更推荐直接去下载一个好的编译器,比如 Goland 这个编译器。首先在 Goland 终端里输入这段命令行,获取最新版的Hertz框架。

weixin_73956119的博客 712

3.嵌入式控制器EC学习,源码框架(60/64端口)(一)

服务函数剖析 上一篇讲到while循环会一直查询十六个标志位是否满足要求,一旦其中某个标志位为1时,程序将会执行相应的服务函数,而执行服务函数是通过函数指针(service_table[ _R1 ])();来实现的。接下来我们分别来看看这十六个服务函数分别包含了哪些内容。 16个函数的函数名如下: const FUNCT_PTR_V_V code service_table[16] = { // Hi-Level Service Service_PCI, // Host 6

qq_30135687的博客 4159

添加swagger安全认证

保密原因,需要给swagger添加登录验证。

weixin_44635886的博客 1855

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Swagger详细解释

去扫描controller的类,控制层有swagger需要的请求路径、请求方式、请求参数、响应内容。创建学生类控制层,在类和方法上写上对应的信息,会自动显示到swagger文档里。如果有配置Security,会对swagger进行拦截,需要对它进行配置。该注解是写在方法上,给方法做简单表示,解释默认给value赋值。notes是该方法的一些注意点,多个注解value不可省略。这个注解是写在控制层上方,给该控制层做简单表示。导入这个依赖时,之前导入的那两个依赖可以删掉。他们之间有联系,会一起导入之前的依赖。

2302_76649176的博客 879

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

字节微服务框架Hertz

字节微服务框架Hertz Hertz简介 代码自动生成工具hz Hertz Engine Hertz 路由 Hertz客户端 Hertz网络库 Hertz请求 Hertz响应 Hertz中间件跨源资源共享 Hertz中间件Recovery Hertz中间件基本认证 Hertz中间件JWT 认证 Hertz中间件Gzip 压缩 Hertz中间件国际化 Hertz中间件Session 扩展 Hertz中间件Pprof Hertz中间件KeyAuth Hertz中间件Swagg

hixiaoyang的博客 352

解决Swagger2开启登录验证后提示无法认证问题

swagger2开启登录访问后,提示无法认证

qq245488540的专栏 1709

Swagger文档在SpringBoot框架下的配置,Swagger配置登录验证

【代码】Swagger文档在SpringBoot框架下的配置,Swagger配置登录验证。

无心 3194

解读字节开源 HTTP 框架 Hertz | 核心结构与入口的实现

作为一个接触开源社区快要一年的准大二生,对开源社区进行贡献的同时自己也想要造一个属于自己的框架——goffee,在边学边写的过程中发现了很多自己不足,正巧CSG正在举行解析Hertz源码的活动,就趁着这个机会学习一下企业级的框架内部的实现并给我自己的框架提供一点思路。

Lance_Yuan24的博客 1551

字节开源WEB框架Hertz太香啦!

Hertz[həːts] 是一个 Golang 微服务 HTTP 框架,在设计之初参考了其他开源框架、、的优势, 并结合内部的需求,使其具有高易用性、高性能、高扩展性等特点,目前在字节跳动内部已广泛使用。如今越来越多的微服务选择使用 Golang,如果对微服务性能有要求,又希望框架能够充分满足内部的可定制化需求,Hertz 会是一个不错的选择。

xhbzl的博客 6518

【swagger】springboot项目中配置Swagger的两种方式以及swagger权限验证、安全控制

swagger是什么? Swagger 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。 Swagger 的目标是对 REST API 定义一个标准且和语言无关的接口,可以让人和计算机拥有无须访问源码、文档或网络流量监测就可以发现和理解服务的能力。当通过 Swagger 进行正确定义,用户可以理解远程服务并使用最少实现逻辑与远程服务进行交互。与为底层编程所实现的接口类似,Swagger 消除了调用服务时可能会有的猜测。Swagger 的优势1.在po

A-Itfuture的博客 1万+

swagger配置登录验证

为了确保swagger在线文档的安全,有必要配置一定的安全策略防止接口被恶意滥用。而配置登录验证就是其中一种方法。下面介绍下实现过程。

shenxiaomo1688的博客 1576

Spring Security + JWT + Swagger2 登录验证

还是对 Security 不太熟悉,Swagger2 的配置比较固定JWT Token Utile 工具类,主要用于管理 JWT 令牌。JWT Token Filter JWT 拦截器,这个就是 Security 和 JWT 的集成了,以及请求发来的时候解析 JWT 从而完成免登录这一操作。

Java技术攻略的博客 1788

Swagger 线上文档授权的几种方式

Swagger方便开发和联调,同时也会存在接口安全问题。所以在生产环境是禁止开放Swagger的,或者更严格一点,SIT、UAT都必须授权访问,Swagger安全方式通常有几种:在Swagger接口中添加认证授权机制,例如JWT令牌和OAuth2.0认证。使用Spring Security框架进行安全管理,针对Swagger接口添加相应的权限配置和拦截器。进行IP访问控制,只允许特定的IP地址访问Swagger接口。对Swagger接口进行加密,例如使用SSL证书或TLS协议进行数据加密传输。

weixin_38045727的博客 5558

一分钟使用高性能框架 Hertz

点击上方蓝色字体,选择“设为星标”回复”云原生“获取基础架构实践Hertz 是什么Hertz[həːts] 是字节 CloudWeGo 团队一个 Golang 微服务 HTTP 框架,在设计之初参考了其他开源框架 fasthttp、gin、echo 的优势, 并结合字节跳动内部的需求,使其具有高易用性、高性能、高扩展性等特点,目前在字节跳动内部已广泛使用。如今越来越多的微服务选择使用 Golang...

wangsofa的博客 2060
上一篇: spring cloud Nacos配置管理
下一篇: 打造个性化github主页 一
过去日记
过去日记 新星创作者: 后端开发技术领域 新星创作者: 后端开发技术领域
博客等级 码龄3年 5342粉丝 225原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

过去日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值