apidoc 文档格式

发布于 2021-10-10 13:16:49 字数 17960 浏览 1518 评论 0

文档采用 XML 格式。存在两个顶级标签:apidocapi,用于描述整体内容和具体接口信息。

文档被从注释中提取之后,最终会被合并成一个 XML 文件,在该文件中 api 作为 apidoc 的一个子元素存在,如果你的项目不想把文档写在注释中,也可以直接编写一个完整的 XML 文件,将 api 作为 apidoc 的一个子元素。

具体可参考 示例代码

以下是对各个 XML 元素以及参数介绍,其中以 @ 开头的表示 XML 属性;. 表示为当前元素的内容;其它表示子元素。

apidoc

用于描述整个文档的相关内容,只能出现一次。

名称类型必填描述
@apidocstring文档的版本要号
@langstring文档内容的本地化 ID,比如 zh-Hansen-US 等。
@logostring文档的图标,仅可使用 SVG 格式图标。
@createddate文档的创建时间
@versionversion文档的版本号
xml-namespacexml-namespace[]针对 application/xml 类型的内容的命名空间设置
titlestring文档的标题
descriptionrichtext文档的整体描述内容
contactcontact文档作者的联系方式
licenselink文档的版权信息
tagtag[]文档中定义的所有标签
serverserver[]API 基地址列表,每个 API 最少应该有一个 server。
apiapi[]文档中的 API 文档
headerparam[]文档中所有 API 都包含的公共报头
responserequest[]文档中所有 API 文档都需要支持的返回内容
mimetypestring[]文档所支持的 mimetype

xml-namespace

application/xml 定义命名空间的相关属性

名称类型必填描述
@prefixstring命名空间的前缀,如果为空,则表示作为默认命名空间,命局只能有一个默认命名空间。
@urnstring命名空间的唯一标识,需要全局唯一,且区分大小写。

richtext

富文本内容

名称类型必填描述
@typestring指定富文本内容的格式,目前支持 htmlmarkdown
.string富文本的实际内容

contact

用于描述联系方式

名称类型必填描述
@namestring联系人的名称
urlstring联系人的 URL
emailstring联系人的电子邮件

link

用于描述链接信息,一般转换为 HTML 的 a 标签。

名称类型必填描述
@textstring链接的字面文字
@urlstring链接指向的文本

tag

用于对各个 API 进行分类

名称类型必填描述
@namestring标签的唯一 ID
@titlestring标签的字面名称
@deprecatedversion该标签在大于该版本时被弃用

server

用于指定各个 API 的服务器地址

名称类型必填描述
@namestring服务唯一 ID
@urlstring服务的基地址,与该服务关联的 API,访问地址都是相对于此地址的。
@deprecatedversion服务在大于该版本时被弃用
@summarystring服务的摘要信息
descriptionrichtext服务的详细描述

api

用于定义单个 API 接口的具体内容

名称类型必填描述
@versionversion表示此接口在该版本中添加
@methodstring当前接口所支持的请求方法
@idstring接口的唯一 ID
@summarystring简要介绍
@deprecatedversion在此版本之后将会被弃用
pathpath定义路径信息
descriptionrichtext该接口的详细介绍,为 HTML 内容。
requestrequest[]定义可用的请求信息
responserequest[]定义可能的返回信息
callbackcallback定义回调接口内容
headerparam[]传递的报头内容,如果是某个 mimetype 专用的,可以放在 request 元素中。
tagstring[]关联的标签
serverstring[]关联的服务

path

用于定义请求时与路径相关的内容

名称类型必填描述
@pathstring接口地址
paramparam[]地址中的参数
queryparam[]地址中的查询参数

param

参数类型,基本上可以作为 request 的子集使用。

名称类型必填描述
@xml-attrbool是否作为父元素的属性,仅作用于 XML 元素。是否作为父元素的属性,仅用于 XML 的请求。
@xml-extractbool将当前元素的内容作为父元素的内容,要求父元素必须为 object
@xml-cdatabool当前内容为 CDATA,与 @xml-attr 互斥。
@xml-ns-prefixstringXML 标签的命名空间名称前缀
@xml-wrappedstring如果当前元素的 @arraytrue,则可以通过此值指定在 XML 格式中的名称。 可以有三种格式:

  • name:表示为数组添加一个父元素名称为 name
  • name1>name2:表示数组项的名称改为 name2,且添加一个父元素名为 name1
  • >name:表示将当前数组元素的名称改为 name
@namestring值的名称
@typetype值的类型
@deprecatedversion表示在大于等于该版本号时不再启作用
@defaultstring默认值
@optionalbool是否为可选的参数
@arraybool是否为数组
@summarystring简要介绍
@array-stylebool以数组的方式展示数据
paramparam[]子类型,比如对象的子元素。
enumenum[]当前参数可用的枚举值
descriptionrichtext详细介绍,为 HTML 内容。

enum

定义枚举类型的数所的枚举值

名称类型必填描述
@deprecatedversion该属性弃用的版本号
@valuestring枚举值
@summarystring枚举值的说明
descriptionrichtext枚举值的详细说明

request

定义了请求和返回的相关内容

名称类型必填描述
@xml-attrbool是否作为父元素的属性,仅作用于 XML 元素。是否作为父元素的属性,仅用于 XML 的请求。
@xml-extractbool将当前元素的内容作为父元素的内容,要求父元素必须为 object
@xml-cdatabool当前内容为 CDATA,与 @xml-attr 互斥。
@xml-ns-prefixstringXML 标签的命名空间名称前缀
@xml-wrappedstring如果当前元素的 @arraytrue,则可以通过此值指定在 XML 格式中的名称。 可以有三种格式:

  • name:表示为数组添加一个父元素名称为 name
  • name1>name2:表示数组项的名称改为 name2,且添加一个父元素名为 name1
  • >name:表示将当前数组元素的名称改为 name
@namestring当 mimetype 为 application/xml 时,此值表示 XML 的顶层元素名称,否则无用。
@typetype值的类型
@deprecatedversion表示在大于等于该版本号时不再启作用
@arraybool是否为数组
@summarystring简要介绍
@statusnumber状态码。在 request 中,该值不可用,否则为必填项。
@mimetypestring媒体类型,比如 application/json 等。
enumenum[]当前参数可用的枚举值
paramparam[]子类型,比如对象的子元素。
exampleexample[]示例代码
headerparam[]传递的报头内容
descriptionrichtext详细介绍,为 HTML 内容。

example

示例代码

名称类型必填描述
@mimetypestring特定于类型的示例代码
@summarystring示例代码的概要信息
.string示例代码的内容,需要使用 CDATA 包含代码。

callback

定义接口的回调内容

名称类型必填描述
@methodstring回调的请求方法
@summarystring简要介绍
@deprecatedversion在此版本之后将会被弃用
pathpath回调的请求地址
descriptionrichtext对于回调的详细介绍
responserequest[]定义可能的返回信息
requestrequest[]定义可用的请求信息
headerparam[]传递的报头内容

string

普通的字符串类型,特殊字符需要使用 XML 实体,比如 < 需要使用 < 代替。

date

采用 RFC3339 格式表示的时间,比如:2019-12-16T00:35:48+08:00

version

版本号,格式遵守 semver 规则。比如:1.0.11.0.1+20200618

bool

布尔值类型,取值为 true 或是 false

type

用于表示数据的类型值,格式为 primitive[.subtype],其中 primitive 为基本类型,而 subtype 为子类型,用于对 primitive 进行进一步的约束,当客户端无法处理整个类型时,可以按照 primitive 的类型处理。
目前支持以下几种类型:

  • 空值;
  • bool 布尔值;
  • object 对象;
  • number 数值类型;
  • number.int 整数类型的数值;
  • number.float 浮点类型的数值;
  • string 字符串;
  • string.url URL 类型的字符串;
  • string.email email 类型的字符串;
  • string.image 表示图片地址的 URL;
  • string.date 表示 RFC3339 中的 full-date 日期格式,比如 2020-01-02
  • string.time 表示 RFC3339 中的 full-time 时间格式,比如 15:16:17Z15:16:17+08:00
  • string.date-time 表示 RFC3339 中的 date-time 格式,比如 2020-01-02T15:16:17-08:00

number

普通的数值类型,比如:1-11.1 等。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

醉城メ夜风

文章 0 评论 0

远昼

文章 0 评论 0

平生欢

文章 0 评论 0

微凉

文章 0 评论 0

Honwey

文章 0 评论 0

qq_ikhFfg

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文