[apidoc]Apidoc-文档生成工具

news2024/12/24 9:56:35

Apidoc主要是用于生成API文档的工具,可以用于多种语言,包括java、javascript、php等

这里主要是为了写前端的APIDOC,方便交互是双方的使用;

工具的安装

工具包的安装

npm i apidoc [-g|-D]

可以-g全局安装,或者-D局部安装,因为只有开发环境需要apidoc包,因此项目依赖只需要放置在devDependencies中即可

VSCODE编辑器的支持,可以在扩展中搜索ApiDoc,最上面的ApiDoc Snippets是最受欢迎的支持工具,可以点击安装

APIDOC的生成

apidoc的配置文件

关于Apidoc的配置有两种方式,一种是在项目根目录中添加apidoc.json,另一种是直接在package.json种添加apidoc的配置

  1. 添加 apidoc.json 方式
{
  "name": "example",
  "version": "0.1.0",
  "description": "apiDoc basic example",
  "title": "Custom apiDoc browser title",
  "url" : "https://api.github.com/v1"
}
  1. 在package.json中添加配置方式
{
  "name": "example",
  "version": "0.1.0",
  "description": "apiDoc basic example",
  "apidoc": {
    "title": "Custom apiDoc browser title",
    "url" : "apiDoc base interface url"
  }
}

注意:

使用第二种方式时,因为 package.json 本身包含name,version,description等属性,若是apidoc不设置该属性,将使用package.json设置的属性值

若是第一种方式,不包含这些属性,可能使用apidoc包的默认值

apidoc配置属性

属性描述
name一般是项目名称,显示在生成的apidoc首页.
version项目的版本号 .
description项目的描述信息.
title是配置生成html的title标签
url设置api接口的前缀,所有api接口路径前会自动添加该值
sampleUrl是否展示发送示例请求的pannel。取值URL,示例的接口请求前缀为该值;取值true,接口请求前缀为url属性值;取值false或者属性不存在,则不展示请求示例的操作pannel.@apiSampleRequest可以用来覆盖该值,设置某个特别接口的特性.
headerapidoc导航的顶部目录,可用于配置展示的md文件
title顶部导航目录的名称
filename顶部导航对应的引入的.md文件路径
footerapidoc导航的底部目录,可用于配置展示的md文件
title底部导航目录的名称
filename底部导航对应的引入的.md文件路径
order可以用于定义 api-names / group-names 的导出目录顺序.若不设置该值顺序随机.“order”: [ “Error”, “Define”,“PostTitleAndError”, “PostError”]

完整配置

{
    "name": "ApiDoc 服务",
    "title": "ApiDoc 服务",
    "version": "0.1.0",
    "description": "Mock服务API文档",
    "url": "http://127.0.0.1",
    "sampleUrl": true,
    "header": {
        "title": "ApiDOC介绍",
        "filename": "apidoc.md"
    },
    "footer": {
        "title": "综合介绍",
        "filename": "apidoc.md"
    },
    "order":[]
}

设置header/footer,示例如下:
在这里插入图片描述

发送示例请求的pannel,示例如下:
在这里插入图片描述

当输入参数后点击发送按钮后显示Response,示例如下:

在这里插入图片描述

Apidoc文档生成

全局安装的apidoc,可以在项目的根目录下打开cmd终端,并执行以下命令;

如果是项目安装的apidoc,可以将以下命令添加到package.json文件的scripts中,可以直接双击执行该命令,避免每次接口变化时都要重新输入该命令,生成接口文档

apidoc -i 编译文件夹 -o 输出文件夹

编译文件夹 :就是需要输出接口文档的文件所在文件夹,apidoc文档会自动识别相关参数,并编译这些代码文件

输出文件夹:生成接口文档的存储文件夹

apidoc命令执行后,根据命令生成的静态html页面,可以在输出文件夹点击html页面查看生成的静态页面,页面即是接口的列表

Api支持的标签

属性使用
@api {method} path title用于定义接口
@apiVersion version设置接口文档的版本
@apiGroup name接口分组
@apiDefine定义结构块
@apiUse使用定义的定义的@apiDefine结构
@apiPermission name定义权限的名称
@apiDescription textapi的详细描述,text可以多行
@apiName name用于导航的html属性值,主要是用作锚点
@apiPrivate标记接口私有,根据生成的命令是否存在–private决定是否生成该接口
@apiDeprecated [text]标记api废弃
@apiIgnore [hint]接口编译时忽略,apidoc中不显示该接口
@apiSampleRequest单独设置指定接口的请求pannel的显示
@apiQuery name定义查询参数
@apiBody定义接口的请求体
@apiExampleapi使用示例
@apiParam用于定义传递给@api的参数
@apiParamExample用于定义@api中多行格式,例如Json格式的参数
@apiError用于定义错误码返回参数
@apiErrorExample错误码返回参数多行格式,例如Json格式的参数
@apiHeader传递给api header的参数描述
@apiHeaderExample传递给api header的多行参数描述
@apiSuccess定义成功返回参数
@apiSuccessExample定义成功返回多行参数,例如Json格式的参数

以下是关于标签的详细使用说明

@api

定义接口

@api {method} path title
  • method:get、post、put等定义接口交互类型
  • path:定义接口路径,如果路径中存在参数,使用:attr表明是路径参数
  • title:接口名称或描述

示例

@api {post} /user/del 删除设置
@api {get} /user/:nav 导航设置

@apiDescription

api的详细描述,text可以多行

@apiDescription text

@apiGroup

用于对@api接口分组,不用于@apiDefine,最好使用英文,否则编译后分组会出现错误

@apiGroup name

@apiName

用于导航的html源代码节点属性data-name等,不能在UI页面上直观的看到展示,不用于@apiDefine;因为是添加到html的属性上,所以推荐英文,主要是用作锚点,用于href等属性

@apiName name

@apiDeprecated

标记api废弃

@apiDeprecated [text]

如果接口直接被废弃,则直接添加
在这里插入图片描述

@apiDeprecated [废弃描述]

如果当前接口被废弃,有了可替换的新的接口,可以在描述中添加新接口的锚点链接,方便用户查看

//定义的接口
@apiGroup groupName
@apiName apiName

//废弃接口
@apiDeprecated [废弃描述] [#groupName:apiName]

点击锚点跳转到分组groupName下的,名字为apiName的接口,因为涉及锚点跳转因此推荐这两个属性都使用英文命名

在这里插入图片描述

@apiIgnore

@apiIgnore [hint]

接口编译时忽略,apidoc中根本不显示该接口,没有该接口的任何信息,而@apiDeprecated则是在接口名称下添加Deprecated红色标记

@apiPrivate

给接口设置私有标签,然后根据生成文档的命令决定是否生成带有私有标签的接口

@apiPrivate

生成显示私有标签的接口:

apidoc -i  ./bin -o ./apidoc --private

不生成显示私有标签的接口:

apidoc -i  ./bin -o ./apidoc

@apiVersion

设置接口文档的版本

@apiVersion version

@apiSampleRequest

用于单独设置某个接口是否显示请求示例pannel。

若sampleUrl已经设置,就近原则,覆盖全局设置的apidoc.json文档中的设置 sampleUrl;

@apiSampleRequest url
  • url : http接口前缀,或者路径前缀,例如:http://apidoc.com, /prefix/path

关闭当前接口的请求示例pannel:

@apiSampleRequest off

@apiPermission

导出一个权限的名称,如果该名称被@apiDefine 添加了注释,则鼠标滑过会有说明

@apiPermission name

在这里插入图片描述

@apiDefine

可以单独定义一个通用的结构,方便被其它多个@api的定义引用

@apiDefine name [title]
                     [description]
  • name : 定义块的名称
  • title : 如果name值是 @apiPermission 或者 @apiParam的名称时,该值就是弹框的别名
  • description : 当title是@apiPermission的值时才显示

普通的使用

定义结构:

/**
 * @apiDefine ResSuccess
 * @apiSuccess {string} resCode response code.
 * @apiSuccess {string} resMes response Message.
 * @apiSuccess {json} [data] response data.
 */

此时结构中,如果定义description,此内容不会被引入

使用结构:

/**
 * @api {post} /user/del 删除设置
 * @apiUse ResSuccess
 */

作为 apiPermission 的说明

定义结构:

/**
 * @apiDefine permission Manager
 * Manager user access
 * @apiSuccess {string} resCode response code.
 */

此时结构中,如果定义其它内容,例如@apiSuccess不会被引入@api,只是作为@apiPermission的一个注释

使用结构:

/**
 * @api {post} /user/del 删除设置
 * @apiPermission permission
 */

当定义了一个符合apiPermission标准的结构时,并定义了@apiSuccess等内容时,如果使用@apiUse引入,则引入成功返回的参数pannel,如果使用@apiPermission引入,则引入定义的说明文字与别名

@apiUse

用于使用@apiDefine定义的结构

@apiUse name
  • name,@apiDefine结构名称

@apiQuery

定义传递给接口的参数,查询参数,给apidoc添加Query Parameter(s)的pannel

@apiQuery [{type}] [field=defaultValue] [description]
  • type : 定义参数类型,{string},{boolean}等

    • {type{size}}:

      {string{…5}} 限定string长度最多5个字符.

      {string{2…5}} 限定string长度2-5个字符

      {number{100-999}} 限定参数属于 100 到 999之间

    • {type=allowedValues}

      {string=“small”} 只有一个可选值

      {string=“small”,“huge”} 有多个可选值

      {number=1,2,3,99} 有多个可选值

      {string {…5}=“small”,“huge”} type设置size 与 allowedValues混合写法

  • field : 属性名称

    • [field] 当前参数可选,非必选参数
    • field[nestedField] 内嵌属性
      @apiParam {Object} [address] 可选address参数
      @apiParam {String} [address[street]] 可选内嵌street参数
      
    • =defaultValue 设置默认值
  • description : 参数描述信息
    在这里插入图片描述

@apiBody

定义传递给接口的参数,给apidoc添加Request Body的pannel

@apiBody [{type}] [field=defaultValue] [description]

参数说明同 @apiQuery
在这里插入图片描述

@apiParam

该标签用于定义api参数,为apidoc添加参数pannel,并且推荐定义出现在@api path中的参数,否则会报警

@apiParam [(group)] [{type}] [field=defaultValue] [description]
  • group : 定义pannel的名字,默认Parameter

  • type : 定义参数类型,{string},{boolean}等

    • {type{size}}:

      {string{…5}} 限定string长度最多5个字符.

      {string{2…5}} 限定string长度2-5个字符

      {number{100-999}} 限定参数属于 100 到 999之间

    • {type=allowedValues}

      {string=“small”} 只有一个可选值

      {string=“small”,“huge”} 有多个可选值

      {number=1,2,3,99} 有多个可选值

      {string {…5}=“small”,“huge”} type设置size 与 allowedValues混合写法

  • field : 属性名称

    • [field] 当前参数可选,非必选参数
    • field[nestedField] 内嵌属性
      @apiParam {Object} [address] 可选address参数
      @apiParam {String} [address[street]] 可选内嵌street参数
      
    • =defaultValue 设置默认值
  • description : 参数描述信息
    在这里插入图片描述

@apiParamExample

该标签用于定义api参数多行示例,为apidoc添加示例块

@apiParamExample [{type}] [title]
                   example

注意,example 另起一行,就按照上述格式

  • type : 参数数据类型
  • title : 参数名称
  • example : 是一个块状示例描述,多行

@apiExample

api的使用示例,为apidoc添加示例块

@apiExample [{type}] title
            example
  • type : 代码语言
  • title : 示例的名称
  • example : 示例详情,多行
 @apiExample {curl} Example usage:
     curl -i http://localhost/user/4711

@apiError

用于定义返回参数错误码,为接口添加返回错误码pannel

@apiError [(group)] [{type}] field [description]
  • group : 定义参数错误码pannel名称
  • type : 定义参数类型,{string},{boolean}等
  • field:定义返回码
  • description:描述

示例如下:

/**
* @apiError UserNotFound The <code>id</code> of the User was not found.
*/

在这里插入图片描述

@apiErrorExample

用于定义返回参数错误码多行格式,例如Json格式的参数,为apidoc添加示例块

@apiErrorExample [{type}] [title] 
              example
  • type : 定义错误响应参数类型,一般是{json}
  • title: 返回example的名称
  • example: 是一个块状示例描述,多行
/**
 * @apiErrorExample {json} Error-Response:
 *     HTTP/1.1 404 Not Found
 *     {
 *       "error": "UserNotFound"
 *     }
 */

在这里插入图片描述

@apiHeader

描述传递给Api-Header的参数,为apidoc添加pannel

@apiHeader [(group)] [{type}] [field=defaultValue] [description]
  • group : 定义参数分组名称,如果没有该值默认为Parameter
  • type : 定义参数类型,{string},{boolean}等
  • field : 属性名称
    • [field] 当前参数可选,非必选参数
    • =defaultValue 设置默认值
  • description : 属性字段参数描述信息

标签示例:

@apiHeader (MyHeaderGroup) {String} authorization Authorization value

@apiHeaderExample

描述传递给Api-Header的多行示例,为apidoc添加示例块

@apiHeaderExample [{type}] [title]
                   example
  • type : 请求格式
  • title : 示例example名称
  • example : 详情示例,多行示例
/*
*  @apiHeaderExample {json} Header-Example:
*   {
*     "Accept-Encoding": "AcceptEncoding: gzip, deflate"
*   }
*/

@apiSuccess

定义成功返回参数的Pannel,apidoc添加成功返回参数pannel

@apiSuccess [(group)] [{type}] field [description]
  • group : 定义成功返回pannel的名称,如果没设置,默认Success 200
  • type : 定义参数类型,{string},{boolean}等
  • field : 定义返回属性,成功返回码
  • description : 属性字段参数描述信息
/**
 * @apiSuccess {Object[]} profiles List of user profiles.
 * @apiSuccess {Number} profiles.age Users age.
 * @apiSuccess {String} profiles.image Avatar-Image.
 */

在这里插入图片描述

@apiSuccessExample

定义成功返回多行参数的示例,例如Json格式的参数,为apidoc添加示例块

@apiSuccessExample [{type}] [title]
                   example
  • type : 定义成功返回示例类型
  • title : 示例example名称
  • example : 详情示例,多行示例,例如json
/*
*  @apiSuccessExample {json} Success-Response:
*     HTTP/1.1 200 OK
*     {
*       "firstname": "John",
*       "lastname": "Doe"
*     }
*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/164308.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网盘系统|基于SpringBoot的网盘系统的设计与实现

作者主页&#xff1a;编程指南针 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容&#xff1a;Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助 收藏点赞不迷路 关注作者有好处 文末获取源…

【无功优化】考虑泄流效应的光伏并网点电压系统侧无功优化(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

软考中级,【软件评测师】经验分享

&#xff0c;以下是我的考试成绩&#xff0c;一次通过很是幸运&#xff0c;希望把我的好运传递给大家&#xff0c;大家都能一次通过谈经验之前&#xff0c;先和大家说说考试的题型以及考试的内容&#xff0c;根据往年的考试题目我们可以很容易得知&#xff0c;软件评测师考试分…

Cisco(62)——PBR策略路由案例

场景1-单下一跳: 拓扑: 需求: R1和R2均连接100.100.100.100,R4看做一台PC,当PC访问100.100.100.100的时候优先走左边,当左边down掉之后切换到右边链路,使用PBR操作。 实现: 1.IP地址等基本配置 R4: R4(config)#no ip routingR4(config)#int e0/0 R4(config-if)#ip add…

Typora自动上传文章图片太难折腾?十三行JavaScript代码足矣

前言 Typora是我用过最爽的markdown文本编辑器了。但是有一点很让人难受&#xff0c;就是在写文章的时候&#xff0c;粘贴上的图片是本地路径。这就导致在复制文章到各大博客平台时发表&#xff0c;图片无法显示。然后需要各种办法去处理文章中的图片&#xff0c;不仅要手动上传…

【学习笔记】【Pytorch】十、线性层

【学习笔记】【Pytorch】九、线性层学习地址主要内容一、前言二、Pytorch的线性层三、Linear类的使用1.使用说明2.代码实现学习地址 PyTorch深度学习快速入门教程【小土堆】. 主要内容 一、前言 在神经网络中&#xff0c;我们通常用线性层来完成两层神经元间的线性变换。 …

【C++】面向对象---继承(万字详解)

目录前言一、继承的定义及概念二、继承方式三、基类和派生类之间的转换四、切片五、继承中的作用域六、派生类中的默认成员函数七、继承中的友元与静态成员继承与友元继承中的静态成员八、棱形继承和虚继承棱形继承虚继承总结前言 继承是面向对象的一个重点&#xff0c;而继承…

活动星投票医疗保障案例推介网络评选微信的投票方式线上免费投票

“医疗保障案例推介”网络评选投票_线上免费投票系统_功能齐全的微信投票_在线免费投票用户在使用微信投票的时候&#xff0c;需要功能齐全&#xff0c;又快捷方便的投票小程序。而“活动星投票”这款软件使用非常的方便&#xff0c;用户可以随时使用手机微信小程序获得线上投票…

图形编辑器:标尺功能的实现

大家好&#xff0c;我是前端西瓜哥。今天我们来实现图形编辑器的标尺功能。 项目地址&#xff1a; https://github.com/F-star/suika 线上体验&#xff1a; https://blog.fstars.wang/app/suika/ 标尺指的是画布上边和左边的两个有刻度的尺子&#xff0c;作用让用户知道他正在编…

java 探花交友day2 项目简介,环境搭建 登录验证码

技术方案&#xff1a; 项目结构&#xff1a; 项目概述 通过接口文档&#xff08;API文档&#xff09;定义规范 开发工具安装与配置 Linux虚拟机 YAPI 账号 tanhuaitcast.cn 密码123456 安装个安卓模拟器&#xff0c;然后安装APK 开发环境说明 初始工程搭建 阿里云短…

Leetcode:235. 二叉搜索树的最近公共祖先(C++)

目录 问题描述&#xff1a; 实现代码与解析&#xff1a; 递归&#xff1a; 原理思路&#xff1a; 精简版&#xff1a; 迭代&#xff1a; 原理思路&#xff1a; 问题描述&#xff1a; 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先…

1589_AURIX_TC275_PMU_Flash的基本特性以及操作

全部学习汇总&#xff1a; GreyZhang/g_TC275: happy hacking for TC275! (github.com) 关于这部分&#xff0c;感觉能够看到的比较有实践指导价值的信息不多。这里关于是否支持cache的信息&#xff0c;之前在内核手册等地方其实也看过了。 DFlash不支持buffer命中的功能&#…

21.Isaac教程--GEMS 导航堆栈简介

Isaac GEMS 导航堆栈简介 ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html 导航堆栈必须执行以下高级功能&#xff1a; Mapping 映射用于自动创建操作环境的地图。 该地图既用于定位&#xff0c;又用于路径规划。 它可以由具有附加功能的人进行注…

deap遗传算法 tirads代码解读

deap遗传算法 tirads代码解读写在最前面Overview 程序概览参考deap框架介绍creator模块创建适应度类Types定义适应度策略创建个体类Toolbox类创建种群&#xff08;个体、策略以及粒子&#xff09;Initialization1. 创建 attr_int 运算符2. 创建 individual_guess() 运算3.创建新…

学会python后:收集每天热点内容信息,并发送到自己的邮箱

嗨害大家好鸭&#xff01;我是小熊猫~ 实现目的 本篇文章内容主要为如何用代码&#xff0c;把你想要的内容&#xff0c;以邮件的形式发送出去 内容可以自己完善&#xff0c;还可以设置一个定时发送&#xff0c;或者开机启动自动运行代码 代理注册与使用 注册账号并登录 生成ap…

使用TDengine时序数据库的介绍以及系统整合

目录 一、 如何使用 安装目录介绍 数据文件查看和备份 客户端连接 sql使用 二、 系统整合 Java连接配置 Demo示例 三、 对采集点、超级表、子表和设备等关系进行维护 一、 如何使用 安装目录介绍 目录/文件 说明 /usr/local/taos/bin TDengine 可执行文件目录…

css笔记2

目录 选择器进阶 1、复合选择器 1.1后代选择器&#xff1a;空格 1.2 子代选择器&#xff1a; > 2、并集选择器&#xff1a;&#xff0c; 3、交集选择器 4、hover伪类选择器 Emmet语法 背景相关属性 1.1背景颜色 2.1背景图片 3.1背景平铺 4.1背景位置 5.1背景相关属…

linux中断机制

目录 1.中断机制 1.1.中断流程图 1.2.代码结构图 2.中断代码 2.1.硬件中断 2.2.asm.s 2.3.trap.c 2.3.1.trap_init函数 2.3.2.die函数 2.4 .sys_call.s 2.4.1._system_call.s 3.总结 1.中断机制 何为中断&#xff0c;中断里面各种名词的区分&#xff0c;请看下面这几篇…

安装VSCode图文版(附安装所需插件)

安装VSCode安装地址下载安装安装成功安装所需插件安装go插件安装中文简体安装地址 VSCode 安装地址 https://code.visualstudio.com/ 下载 在下面两个地方都可以下载&#xff0c;左侧下载可以根据自己的需要进行版本或者系统的选择下载。 安装 同意协议 选择附加项 为什…

基于python知识图谱医疗领域问答系统实现(完整代码+数据可直接运行)

直接上结果展示: “让人类永远保持理智,确实是一种奢求” ,机器人莫斯,《流浪地球》 项目概况 本项目为一个使用深度学习方法解析问题,知识图谱存储、查询知识点,基于医疗垂直领域的对话系统的后台程序 运行效果: