apidoc

package module
v6.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 8, 2020 License: MIT Imports: 21 Imported by: 0

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" 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 文件中找到。

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

Documentation

Overview

Package apidoc RESTful API 文档生成工具

可以从代码文件的注释中提取文档内容,生成 API 文档, 支持大部分的主流的编程语言。

在生成文档之前,请确保已经调用 Init() 用于初始化环境, Init() 可以确保能以你指定的本地化信息显示提示信息。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Buffer

func Buffer(h *message.Handler, o *output.Options, i ...*input.Options) (*bytes.Buffer, error)

Buffer 生成文档内容并返回

如果是文档语法错误,则相关的错误信息会反馈给 h,由 h 处理错误信息; 如果是配置项(o 和 i)有问题,则以 *message.SyntaxError 类型返回错误信息。

NOTE: 需要先调用 Init() 初始化本地化信息

func Build added in v6.0.1

func Build(h *message.Handler, o *output.Options, i ...*input.Options) error

Build 解析文档并输出文档内容

如果是文档语法错误,则相关的错误信息会反馈给 h,由 h 处理错误信息; 如果是配置项(o 和 i)有问题,则以 *message.SyntaxError 类型返回错误信息。

NOTE: 需要先调用 Init() 初始化本地化信息

func Detect

func Detect(wd string, recursive bool) error

Detect 根据 wd 所在目录的内容生成一个配置文件,并写入到该目录配置文件中。

wd 表示当前程序的工作目录,根据此目录的内容检测其语言特性。

func Do deprecated

func Do(h *message.Handler, o *output.Options, i ...*input.Options) error

Do 解析文档并输出文档内容

Deprecated: 下个版本取消

func Init

func Init(tag language.Tag) error

Init 初始化包

如果传递了 language.Und,则采用系统当前的本地化信息。 如果获取系统的本地化信息依然失败,则会失放 zh-Hans 作为默认值。

func Mock

func Mock(h *message.Handler, d *doc.Doc, servers map[string]string) (http.Handler, error)

Mock 生成 Mock 中间件

调用者需要保证 d 的正确性。

func MockBuffer

func MockBuffer(h *message.Handler, data []byte, servers map[string]string) (http.Handler, error)

MockBuffer 生成 Mock 中间件

data 为文档内容; servers 为文档中所有 server 以及对应的路由前缀。

func MockFile

func MockFile(h *message.Handler, path string, servers map[string]string) (http.Handler, error)

MockFile 生成 Mock 中间件

path 为文档路径,可以是本地路径也可以是 URL,根据是否为 http 或是 https 开头做判断; servers 为文档中所有 server 以及对应的路由前缀。

func Static

func Static(dir string, stylesheet bool) http.Handler

Static 为 /docs 搭建一个静态文件服务

相当于本地版本的 https://apidoc.tools,默认页为 index.xml。

用户可以通过诸如:

http.Handle("/apidoc", apidoc.Static(...))

的代码搭建一个简易的 https://apidoc.tools 网站。

/docs 存放了整个项目的文档内容。其中根目录中包含网站的相关内容, 而 /v6 这些以版本号开头的则是查看 xml 文档的工具代码。 同时这一份代码也被编译在代码中。如果你不需要修改文档内容, 则可以直接传递空的 dir,表示采用内置的文档,否则指向指定的目录, 如果指向了自定义的目录,需要保证目录结构和文件名与 /docs 相同。 stylesheet 则指定了是否需要根目录的内容,如果为 true,只会提供转换工具的代码。

func Test

func Test(h *message.Handler, i ...*input.Options)

Test 测试文档语法,并将结果输出到 h

func Valid

func Valid(content []byte) error

Valid 验证文档内容的正确性

func Version

func Version() string

Version 当前程序的版本号

为一个正常的 semver(https://semver.org/lang/zh-CN/) 格式字符串。

func View

func View(status int, url string, data []byte, contentType, dir string, stylesheet bool) http.Handler

View 返回查看文档的中间件

提供了与 Static 相同的功能,同时又可以额外添加一个文件。 与 Buffer 结合,可以提供一个完整的文档查看功能。

status 是新文档的返回的状态码; url 表示文档在路由中的地址,必须以 / 开头; data 表示文档的实际内容; contentType 表示文档的 Content-Type 报头值; dir 和 stylesheet 则和 Static 相同。

func ViewFile

func ViewFile(status int, url, path, contentType, dir string, stylesheet bool) (http.Handler, error)

ViewFile 返回查看文件的中间件

功能等同于 View,但是将 data 参数换成了文件地址。 url 可以为空值,表示接受 path 的文件名部分作为其值。

path 可以是远程文件 (http 开头),也可以是本地文件。

Types

type Config

type Config struct {
	// 产生此配置文件的程序版本号
	//
	// 程序会用此来判断程序的兼容性。
	Version string `yaml:"version"`

	// 输入的配置项,可以指定多个项目
	//
	// 多语言项目,可能需要用到多个输入面。
	Inputs []*input.Options `yaml:"inputs"`

	// 输出配置项
	Output *output.Options `yaml:"output"`
	// contains filtered or unexported fields
}

Config 配置文件映身的结构

func LoadConfig

func LoadConfig(h *message.Handler, wd string) *Config

LoadConfig 加载指定目录下的配置文件

所有的错误信息会输出到 h,在出错时,会返回 nil

func (*Config) Buffer

func (cfg *Config) Buffer() *bytes.Buffer

Buffer 根据 wd 目录下的配置文件生成文档内容并保存至内存

具体信息可参考 Buffer 函数的相关文档。

func (*Config) Build added in v6.0.1

func (cfg *Config) Build(start time.Time)

Build 解析文档并输出文档内容

具体信息可参考 Build 函数的相关文档。

func (*Config) Do deprecated

func (cfg *Config) Do(start time.Time)

Do 解析文档并输出文档内容

Deprecated: 下个版本取消

func (*Config) Test

func (cfg *Config) Test()

Test 执行对语法内容的测试

Directories

Path Synopsis
cmd
apidoc
apidoc 是一个 RESTful API 文档生成工具 大致的使用方法为: apidoc cmd [args] 具体的参数说明,可以使用 help 参数查看: apidoc help cmd
apidoc 是一个 RESTful API 文档生成工具 大致的使用方法为: apidoc cmd [args] 具体的参数说明,可以使用 help 参数查看: apidoc help cmd
doc
Package doc 文档格式
Package doc 文档格式
doctest
Package doctest 提供了一个合法的 doc.Doc 对象
Package doctest 提供了一个合法的 doc.Doc 对象
Package input 用于处理输入的文件,从代码中提取基本的注释内容。
Package input 用于处理输入的文件,从代码中提取基本的注释内容。
internal
cmd
Package cmd 提供子命令的相关功能
Package cmd 提供子命令的相关功能
docs
Package docs 打包文档内容
Package docs 打包文档内容
lang
Package lang 各类语言解析和管理。
Package lang 各类语言解析和管理。
locale
Package locale 提供了一个本地化翻译服务。
Package locale 提供了一个本地化翻译服务。
locale/syslocale
Package syslocale 获取所在系统的本地化语言信息。
Package syslocale 获取所在系统的本地化语言信息。
mock
Package mock 根据 doc 生成 mock 数据
Package mock 根据 doc 生成 mock 数据
openapi
Package openapi 实现 openapi 的相关数据类型 https://github.com/OAI/OpenAPI-Specification
Package openapi 实现 openapi 的相关数据类型 https://github.com/OAI/OpenAPI-Specification
path
Package path 提供一些文件相关的操作
Package path 提供一些文件相关的操作
vars
Package vars 提供了一些公共的函数、结构体及代码级别的设置项。
Package vars 提供了一些公共的函数、结构体及代码级别的设置项。
Package message 各类输出消息的处理
Package message 各类输出消息的处理
messagetest
Package messagetest 提供测试生成 message 相关的测试工具
Package messagetest 提供测试生成 message 相关的测试工具
Package output 对解析后的数据进行渲染输出。
Package output 对解析后的数据进行渲染输出。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL