# README
apidoc
apidoc 是一个简单的 RESTful API 文档生成工具,它从代码注释中提取特定格式的内容,生成文档。
目前支持以下语言:C#、C/C++、D、Dart、Erlang、Go、Groovy、Java、JavaScript、Julia、Kotlin、Lisp/Clojure、Lua、Nim、Pascal/Delphi、Perl、PHP、Python、Ruby、Rust、Scala、Swift、Typescript 和 Zig。
具体文档可参考:https://apidoc.tools
/**
* <api method="GET" summary="获取所有的用户信息">
* <path path="/users">
* <query name="page" type="number" default="0" summary="显示第几页的内容" />
* <query name="size" type="number" default="20" summary="每页显示的数量" />
* </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="object">
* <param name="code" type="int" summary="错误代码" />
* <param name="msg" type="string" summary="错误内容" />
* </response>
* </api>
*/
func login(w http.ResponseWriter, r *http.Request) {
// TODO
}
使用
macOS 和 linux 可以使用 homebrew 安装:
brew tap caixw/brew
brew install caixw/brew/apidoc
同时在 https://github.com/caixw/apidoc/releases 提供了部分主流系统下的可用二进制。
如果你使用的系统不在此列,则需要手动下载编译:
git clone https://github.com/caixw/apidoc.git
cd apidoc
./scripts/build.sh
支持多种本地化语言,默认情况下会根据当前系统所使用的语言进行调整。也可以通过设置环境变更 LANG
指定一个本地化信息。*nix 系统也可以使用以下命令:
LANG=lang apidoc # lang 设置为你需要的语言 ID,比如 zh-hans 等。
具体的安装和使用细节可参考 https://apidoc.tools/#usage。
集成
若需要将 apidoc 当作包集成到其它 Go 程序中,可参考以下代码:
import (
"golang.org/x/text/language"
"github.com/caixw/apidoc/v7"
"github.com/caixw/apidoc/v7/core"
"github.com/caixw/apidoc/v7/build"
)
// 初始本地化内容
apidoc.SetLocale(language.MustParse("zh-Hans"))
// 可以自定义实现具体的错误处理方式
h := core.NewHandler(...)
output := &build.Output{...}
inputs := []*build.Input{...}
apidoc.Build(h, output, inputs...)
具体可查看文档:https://pkg.go.dev/github.com/caixw/apidoc/v7
参与开发
请阅读 CONTRIBUTING.md 文件的相关内容。
版权
本项目源码采用 MIT 开源授权许可证,完整的授权说明可在 LICENSE 文件中找到。
文档内容的版权由各个文档各自表述。
# Functions
Buffer 生成文档内容并返回
如果是文档语法错误,则相关的错误信息会反馈给 h,由 h 处理错误信息; 如果是配置项(o 和 i)有问题,则以 *core.Error 类型返回错误信息。
NOTE: 如果需要从配置文件进行构建文档,可以采用 Config.Buffer.
Build 解析文档并输出文档内容
如果是文档语法错误,则相关的错误信息会反馈给 h,由 h 处理错误信息; 如果是配置项(o 和 i)有问题,则以 *core.Error 类型返回错误信息。
NOTE: 如果需要从配置文件进行构建文档,可以采用 Config.Build.
CheckSyntax 测试文档语法.
Locale 获取当前设置的本地化 ID.
Locales 返回当前所有支持的本地化信息.
Mock 根据文档数据生成 Mock 中间件
data 为文档内容; o 用于生成 Mock 数据的随机项,如果为 nil,则会采用默认配置项;.
MockFile 根据文档生成 Mock 中间件
path 为文档路径; o 用于生成 Mock 数据的随机项,如果为 nil,则会采用默认配置项;.
ServeLSP 提供 language server protocol 服务
header 表示传递内容是否带报头; t 表示允许连接的类型,目前可以是 tcp、udp、stdio 和 unix; timeout 表示服务端每次读取客户端时的超时时间,如果为 0 表示不会超时。 超时并不会出错,而是重新开始读取数据,防止被读取一直阻塞,无法结束进程;.
SetLocale 设置当前的本地化 ID
如果不调用此函数,则默认会采用 internal/locale.DefaultLocaleID 的值。 如果想采用当前系统的本地化信息,可以使用 github.com/issue9/localeutil.SystemLanguageTag 函数。.
Static 为 dir 指向的路径内容搭建一个静态文件服务
dir 为静态文件的根目录,一般指向 /docs 用于搭建一个本地版本的 https://apidoc.tools,默认页为 index.xml。 如果 dir 值为空,则会采用内置的文档内容作为静态文件服务的内容。
stylesheet 表示是否只展示 XSL 及相关的内容。
用户可以通过以下代码搭建一个简易的 https://apidoc.tools 网站: http.Handle("/apidoc", apidoc.Static(...)).
Version 当前程序的版本号
full 表示是否需要在版本号中包含编译日期和编译时的 Git 记录 ID。.
# Type aliases
Config 配置文件 apidoc.yaml 所表示的内容.