使用 Gin-Docs 自动生成 API 文档

该插件移植自 Python 的 Flask-Docs,可以根据代码注释生成文档页面,支持离线文档下载和生成,支持在线调试,支持密码认证。

Gin-Docs

Gin API 文档自动生成插件

特性

  • 根据代码注释自动生成 Markdown 文档
  • 支持离线 Markdown 文档下载
  • 支持在线调试
  • 支持生成离线文档
    • HTML
    • Markdown

链接

https://github.com/kwkwc/gin-docs

安装

go get -u github.com/kwkwc/gin-docs

使用

import ("github.com/gin-gonic/gin"gd "github.com/kwkwc/gin-docs"
)r := gin.Default()
r.POST("/api/todo", AddTodo)
r.GET("/api/todo", GetTodo)c := &gd.Config{}
apiDoc := gd.ApiDoc{Ge: r, Conf: c.Default()}
apiDoc.OnlineHtml()r.Run()

查看文档页面

http://127.0.0.1/docs/api/

演示

在线演示

配置

type Config struct {// 标题, default `API Doc`Title string// 版本, default `1.0.0`Version string// 描述Description string// 自定义 CDN CSS 模板CdnCssTemplate string// 自定义 CDN JS 模板CdnJsTemplate string// 自定义 url prefix, default `/docs/api`UrlPrefix string// 文档不存在时的描述, default `No documentation found for this API`NoDocText string// 启用文档页面, default `true`Enable bool// 使用 CDN, default `false`Cdn bool// 需要排除的 API 包名Exclude []string// 允许显示的方法, default `[]string{"GET", "POST", "PUT", "DELETE", "PATCH"}`MethodsList []string// SHA256 加密的授权密码,例如这里是 admin// echo -n admin | shasum -a 256// `8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918`PasswordSha2 string// 启用 markdown 处理所有文档, default `true`AllMd bool
}

标记 @@@

# 默认以 markdown 处理所有文档
# 1. 如果希望指定处理,请使用 `@@@` 包裹
# 2. 如果希望展示原始文档,请关闭 `Config.AllMd`,并去除 `@@@` 标记@@@
# 在这里写下你的 markdown 文档
@@@

API

/*
Add todo### args
|  args | required | location | type   |  help    |
|-------|----------|----------|--------|----------|
| name  |  true    |  json    | string | todo name |
| type  |  true    |  json    | string | todo type |### request
```json
{"name": "xx", "type": "code"}
```### response
```json
{"code": xxxx, "msg": "xxx", "data": null}
```
*/
func AddTodo(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"todo": "post todo",})
}

sample_app_add

/*
Get todo### description
> Get todo### args
|  args | required | location |  type  |  help    |
|-------|----------|----------|--------|----------|
|  name |  true    |  query   | string | todo name |
|  type |  false   |  query   | string | todo type |### request
```
http://127.0.0.1:8080/api/todo?name=xxx&type=code
```### response
```json
{"code": xxxx, "msg": "xxx", "data": null}
```
*/
func GetTodo(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"todo": "get todo",})
}

sample_app_get_1
sample_app_get_2

调试器

debugger

认证

authentication

生成离线文档

r := gin.Default()c := &gd.Config{}
apiDoc := gd.ApiDoc{Ge: r, Conf: c.Default()}// HTML: 在 `htmldoc/` 生成离线 HTML 文档
out := "htmldoc"
apiDoc.OfflineHtml(out, true)r.StaticFile(c.UrlPrefix+"/", filepath.Join(out, "index.html"))
r.StaticFile(c.UrlPrefix+"/data", filepath.Join(out, "data"))
r.Static(c.UrlPrefix+"/static", filepath.Join(out, "static"))// Markdown: 生成 `doc.md` 离线 Markdown 文档
apiDoc.OfflineMarkdown("doc.md", true)

示例

Complete example

开发

# 克隆代码
git clone git@github.com:kwkwc/gin-docs.git# 工作目录
cd gin-docs# 安装依赖
make install# 运行检查
make check-all

移植项目

Flask-Docs

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

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

相关文章

山东齐鲁文化名人颜廷利:汉语自媒体里面的真正文字智慧

在这个数字技术日新月异的时代,大数据和人工智能等技术的兴起已经深刻地改变了信息的传播方式。特别是随着自媒体的兴起,传统的物质形态的报刊杂志已迅速转变为无形的知识与智慧的流动,这种转变不仅改变了信息的传递手段,更释放出…

UDP多对多组播通信

广播和多播仅应用于UDP。TCP是一个面向连接的协议,TCP一定是点对点的,一点是两个主机来建立连接的,TCP肯定是单播。只有UDP才会使用广播和组播。 如下示例实现一个UDP多对多的组播通信,进程中有收、发两个线程,分别表…

Python专题:十六、异常处理(2)

异常的预判和防护 import randomnum random.randint(1, 100) # 获得一个随机数 is_done False # 是否猜中的标记 count 0 # 玩家猜了几次while not is_done:guess int(input(请输入一个[1, 100]的整数:))if guess num:is_done Trueelif guess > num:pr…

Vue3 - 项目配置多环境配置文件

最常见的多环境配置,就是开发环境配置,和生产环境配置(也就是上线的配置),很多情况下我们开发环境下的域名,和一些配置项,和我们生产模式下的不同,这个时候就需要我们进行多环境配置,不然每次发版都要改一波数据多麻烦。 另一种情况就是你两个项目是用的一套代码,但是最…

pnpm:无法加载文件 C:\Users\PC\AppData\Roaming\npm\pnpm.ps1,因为在此系统上禁止运行脚本。

使用pnpm命令启动vue时报了个错: 解决起来也简单,右击开始菜单,用管理员身份打开终端。win11的如下图: win10我记得应该是PowerShell(管理员),这样的。 打开之后执行命令: set-…

接口自动化-requests库

requests库是用来发送请求的库,本篇用来讲解requests库的基本使用。 1.安装requests库 pip install requests 2.requests库底层方法的调用逻辑 (1)get / post / put / delete 四种方法底层调用 request方法 注意:data和json都…

亚马逊自养号测评策略:提升店铺产品权重的秘诀

对于卖家而言,拥有一款爆款产品无疑是获得流量的关键,同时它也能显著提升店铺的销量。因此,大部分卖家都热衷于学习如何打造爆款产品的策略,特别是对于那些致力于经营自己店铺的卖家来说,掌握这一技巧对于店铺的成功运…

Linux|基础IO

Linux|基础IO 回顾c语言的文件操作提炼对文件的理解系统调用初始open函数返回值fd为什么我们向fd一个整数写就写入文件了呢?怎么理解读写操作总结open函数有哪些功能怎么理解往硬件(显示器,键盘)中读写数据如何理解FILE*访问文件 …

NXP RT1176(一)——二级BootLoader开发(安全引导加载程序SBL)

目录 1. 开发环境 2. 二级BOOT的功能 3. 步骤 3.1 配置源码 3.2 构建项目 3.2.1 MDK 3.2.2 IAR(IAR也编译一下工程看看,这样两个平台都可以支持了) 单核M7的开发!! 1. 开发环境 本文Windows下开发:…

ALV 红绿灯

前言 在ABAP ALV中,LIGHTS_FIELDNAME参数是用于实现行级视觉指示或“灯光效果”的一个重要设置项,尤其适用于标记或突出显示列表中符合特定条件的行。这个参数通常是在定义ALV布局(使用结构如LVC_S_LAYOUT或通过SALV类的相应方法)…

每日学习 - APK解包

文章目录 APK的定义解析APKAPK 是什么每个文件的意义classes.dexAndroidManifest.xmlassetslibres & resources.arsc 反编译工具apktool apk解包 秒了~ APK的定义 APK(Android Package Kit)是用于部署和分发Android操作系统上应用程序的软件包格式。…

使用KNN预测一个新的点,以及将这个点用五角星进行matplotlib可视化展示

概述 基于之前的KNN案例继续做一些操作。 之前的完整代码如下: from sklearn.datasets import make_blobs # KNN 分类器 from sklearn.neighbors import KNeighborsClassifier # 画图工具 import matplotlib.pyplot as plt # 数据集拆分工具 from sklearn.model_…