# README
apidoc

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" 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
}
使用
在 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.Build(h, output, inputs...)
参与开发
请阅读 CONTRIBUTING.md 文件的相关内容。
版权
本项目源码采用 MIT 开源授权许可证,完整的授权说明可在 LICENSE 文件中找到。
文档内容的版权由各个文档各自表述。
# Functions
Buffer 生成文档内容并返回
如果是文档语法错误,则相关的错误信息会反馈给 h,由 h 处理错误信息; 如果是配置项(o 和 i)有问题,则以 *message.SyntaxError 类型返回错误信息。
NOTE: 需要先调用 Init() 初始化本地化信息.
Build 解析文档并输出文档内容
如果是文档语法错误,则相关的错误信息会反馈给 h,由 h 处理错误信息; 如果是配置项(o 和 i)有问题,则以 *message.SyntaxError 类型返回错误信息。
NOTE: 需要先调用 Init() 初始化本地化信息.
Detect 根据 wd 所在目录的内容生成一个配置文件,并写入到该目录配置文件中。
wd 表示当前程序的工作目录,根据此目录的内容检测其语言特性。.
Do 解析文档并输出文档内容
Deprecated: 下个版本取消.
Init 初始化包
如果传递了 language.Und,则采用系统当前的本地化信息。 如果获取系统的本地化信息依然失败,则会失放 zh-Hans 作为默认值。.
LoadConfig 加载指定目录下的配置文件
所有的错误信息会输出到 h,在出错时,会返回 nil.
Mock 生成 Mock 中间件
调用者需要保证 d 的正确性。.
MockBuffer 生成 Mock 中间件
data 为文档内容; servers 为文档中所有 server 以及对应的路由前缀。.
MockFile 生成 Mock 中间件
path 为文档路径,可以是本地路径也可以是 URL,根据是否为 http 或是 https 开头做判断; servers 为文档中所有 server 以及对应的路由前缀。.
Static 为 /docs 搭建一个静态文件服务
相当于本地版本的 https://apidoc.tools,默认页为 index.xml。
用户可以通过诸如: http.Handle("/apidoc", apidoc.Static(...)) 的代码搭建一个简易的 https://apidoc.tools 网站。
/docs 存放了整个项目的文档内容。其中根目录中包含网站的相关内容, 而 /v6 这些以版本号开头的则是查看 xml 文档的工具代码。 同时这一份代码也被编译在代码中。如果你不需要修改文档内容, 则可以直接传递空的 dir,表示采用内置的文档,否则指向指定的目录, 如果指向了自定义的目录,需要保证目录结构和文件名与 /docs 相同。 stylesheet 则指定了是否需要根目录的内容,如果为 true,只会提供转换工具的代码。.
Test 测试文档语法,并将结果输出到 h.
Valid 验证文档内容的正确性.
Version 当前程序的版本号
为一个正常的 semver(https://semver.org/lang/zh-CN/) 格式字符串。.
View 返回查看文档的中间件
提供了与 Static 相同的功能,同时又可以额外添加一个文件。 与 Buffer 结合,可以提供一个完整的文档查看功能。
status 是新文档的返回的状态码; url 表示文档在路由中的地址,必须以 / 开头; data 表示文档的实际内容; contentType 表示文档的 Content-Type 报头值; dir 和 stylesheet 则和 Static 相同。.
ViewFile 返回查看文件的中间件
功能等同于 View,但是将 data 参数换成了文件地址。 url 可以为空值,表示接受 path 的文件名部分作为其值。
path 可以是远程文件 (http 开头),也可以是本地文件。.