Categorygithub.com/caixw/apidoc/v5
modulepackage
5.2.1
Repository: https://github.com/caixw/apidoc.git
Documentation: pkg.go.dev

# README

apidoc Build Status Go version Go Report Card license codecov

apidoc 是一个简单的 RESTful API 文档生成工具,它从代码注释中提取特定格式的内容,生成文档。 目前支持支持以下语言:C#、C/C++、D、Erlang、Go、Groovy、Java、JavaScript、Pascal/Delphi、 Perl、PHP、Python、Ruby、Rust、Scala 和 Swift。

具体文档可参考:https://apidoc.tools

/**
 * <api method="GET" summary="获取所有的用户信息">
 *     <path path="/users">
 *         <query name="page" type="number" default="0">显示第几页的内容</query>
 *         <query name="size" type="number" default="20">每页显示的数量</query>
 *     </path>
 *     <tag>user</tag>
 *     <server>users</server>
 *     <response status="200" type="object" mimetype="application/json">
 *         <param name="count" type="int" optional="false" summary="符合条件的所有用户数量" />
 *         <param name="users" type="object" array="true" summary="用户列表">
 *             <param name="id" type="int" summary="唯一 ID" />
 *             <param name="name" type="string" summary="姓名" />
 *         </param>
 *         <example mimetype="application/json">
 *         <![CDATA[
 *         {
 *             "count": 500,
 *             "users": [
 *                 {"id":1, "name": "管理员2"},
 *                 {"id":2, "name": "管理员2"}
 *             ],
 *         }
 *         ]]>
 *         </example>
 *     </response>
 *     <response status="500" mimetype="application/json" type="obj">
 *         <param name="code" type="int" summary="错误代码" />
 *         <param name="msg" type="string" summary="错误内容" />
 *     </response>
 * </api>
 */
func login(w http.ResponseWriter, r *http.Request) {
    // TODO
}

使用

https://github.com/caixw/apidoc/releases 提供了主流系统下可用软件,可直接下载使用。 如果你使用的系统不在此列,则需要手动下载编译。

支持多种本地化语言,默认情况下会根据当前系统所使用的语言进行调整。 也可以通过设置环境变更 LANG 指定一个本地化信息。*nix 系统也可以使用以下命令:

LANG=lang apidoc

将其中的 lang 设置为你需要的语言。

集成

若需要将 apidoc 当作包集成到其它 Go 程序中,可参考以下代码:

// 初始本地化内容
apidoc.Init(language.MustParse("zh-Hans"))

// 可以自定义实现具体的错误处理方式
h := message.NewHandler(...)

output := &output.Options{...}
inputs := []*input.Options{
    &input.Options{},
}

apidoc.Do(h, output, inputs...)

参与开发

请阅读 CONTRIBUTING.md 文件的相关内容。

版权

本项目源码采用 MIT 开源授权许可证,完整的授权说明可在 LICENSE 文件中找到。

文档内容的版权由各个文档各自表述。

# Packages

No description provided by the author
Package doc 文档格式.
Package input 用于处理输入的文件,从代码中提取基本的注释内容。 多行注释和单行注释在处理上会有一定区别: - 单行注释,风格相同且相邻的注释会被合并成一个注释块; - 单行注释,风格不相同且相邻的注释会被按注释风格多个注释块; - 多行注释,即使两个注释释块相邻也会被分成两个注释块来处理。.
Package message 各类输出消息的处理.
Package output 对解析后的数据进行渲染输出。.
Package static 提供了对 docs 中内容的处理方式.

# Functions

Buffer 生成文档内容并返回 如果是文档语法错误,则相关的错误信息会反馈给 h,由 h 处理错误信息; 如果是配置项(o 和 i)有问题,则以 *message.SyntaxError 类型返回错误信息。 NOTE: 需要先调用 Init() 初始化本地化信息.
Detect 根据 wd 所在目录的内容生成一个配置文件,并写入到该目录配置文件中。 wd 表示当前程序的工作目录,根据此目录的内容检测其语言特性。.
Do 解析文档并输出文档内容 如果是文档语法错误,则相关的错误信息会反馈给 h,由 h 处理错误信息; 如果是配置项(o 和 i)有问题,则以 *message.SyntaxError 类型返回错误信息。 NOTE: 需要先调用 Init() 初始化本地化信息.
Init 初始化包 如果传递了 language.Und,则采用系统当前的本地化信息。 如果获取系统的本地化信息依然失败,则会失放 zh-Hans 作为默认值。.
LoadConfig 加载指定目录下的配置文件 所有的错误信息会输出到 h,在出错时,会返回 nil.
Make 根据 wd 目录下的配置文件生成文档 Deprecated: 下个版本将弃用,请使用 Config.Do 代替。.
MakeBuffer 根据 wd 目录下的配置文件生成文档内容并保存至内存 Deprecated: 下个版本将弃用,请使用 Config.Buffer 代替。.
Pack 同时将生成的文档内容与 docs 之下的内容打包 url 为文档的地址; contentType 为文档的类型,如果不指定,由 http.DetectContentType 获取; pkgName 打包的内容输出到 Go 文件时,该文件的包名; varName 内容保存的变量名; path 输出的 Go 文件地址; t 表示需要打包的文件类型; chrome 浏览器限制了 XLS 与 XML 必须要遵守同源策略的限制, 这就限制了文档直接引用 https://apidoc.tools/v5/apidoc.xsl 文件的使用。 Pack() 可以将 XML 文档与 XSL 等内容打包为一个 Go 源码文件, 之后通过 Site() 建立文件服务,方便用户在二进制文件中直接建议文档服务。.
Site 返回文件服务中间件 Deprecated: 下个版本弃用,请使用 Static 代替。.
Static 返回文件服务中间件 相当于本地版本的 https://apidoc.tools,默认页为 index.xml。 用户可以通过诸如: http.Handle("/apidoc", apidoc.Static(...)) 的代码搭建一个简易的 https://apidoc.tools 网站。 embedded 表示通过 Pack 打包之后的内容,如果该值不为空, 则在 embedded 中查找用户请求的内容; dir 表示文档的根目录,会在该目录下查找用户请求的文档内容。 当 embedded 为空时,dir 才启作用,dir 应该始终指向 /docs 目录, 如果是普通的文件静态服务,可以直接采用 http.FileServer 会更通用; t 表示可以访问的文件类型,仅对 dir 参数启作用。 NOTE: 只要 embedded 不为空,则只会采用 embedded 作为文件服务的主体内容。 dir 与 embedded 的区别在于:dir 指同一个本地目录,方便在运行时进行修改; 而 embedded 则直接将 /docs 内容内嵌到代码中,如果需要修改,则要重新编译代码才有效果。.
Test 测试文档语法,并将结果输出到 h.
Version 当前程序的版本号 为一个正常的 semver(https://semver.org/lang/zh-CN/) 格式字符串。.

# Structs

Config 配置文件映身的结构.