apidoc利用代码注释书写文档
个人博客同步文章 https://mr-houzi.com/2018/07/...
apidoc是一款利用源代码中注释来创建RESTful Web API文档的工具。apidoc可用于C#,Go,Dart,Java,JavaScript,PHP,TypeScript和所有其他支持Javadoc的语言。
安装
npm install apidoc -g
运行
apidoc -i myapp/ -o apidoc/ -t mytemplate/
myapp/ 根据myapp文件夹下文件的注释进行创建文档
apidoc/ 文档的输出位置
mytemplate/ 使用的模板
命令行界面
查看帮助,用于显示命令行参数:
apidoc -h
配置(apidoc.json)
在apidoc.json配置项目的基本信息
{
  "name": "example",
  "version": "0.1.0",
  "description": "apiDoc basic example",
  "title": "Custom apiDoc browser title",
  "url" : "https://api.github.com/v1"
}
apidoc也支持通过package.json进行设置,只需在"apidoc":{}下添加参数即可。
{
  "name": "example",
  "version": "0.1.0",
  "description": "apiDoc basic example",
  "apidoc": {
    "title": "Custom apiDoc browser title",
    "url" : "https://api.github.com/v1"
  }
}
如果你想设置header和footer,把下面信息加入到apidoc.json中(别忘记创建markdown文件)。
{
  "header": {
    "title": "My own header title",
    "filename": "header.md"
  },
  "footer": {
    "title": "My own footer title",
    "filename": "footer.md"
  }
}
使用
接下来给大家介绍一下常用的参数,完整介绍大家可以自己看一下官方文档,正常情况来说下面这些就够用。
@api
@api {method} path [title]
声明一下请求方法、请求路径等。
| 名称 | 描述 | 
|---|---|
| method | 请求方法:DELETE,GET,POST,PUT,... | 
| path | 请求路径 | 
| title | 一个简短的标题。(用于导航和文章标题) | 
eg:
/**
 * @api {get} /user/:id
 */
@apiDeprecated
@apiDeprecated [text]
将API方法标记为已弃用
| 名称 | 描述 | 
|---|---|
| text | 文字描述 | 
apiDescription
@apiDescription text
API方法的详细描述。
| 名称 | 描述 | 
|---|---|
| text | 文字描述 | 
@apiName
@apiName name
定义方法文档块的名称。名称将用于生成的输出中的子导航。结构定义不需要@apiName。
| 名称 | 描述 | 
|---|---|
| name | 方法的唯一名称。 <br/> 格式:方法 + 路径(例如Get + User),建议以这种方式命名 | 
eg:
/**
 * @api {get} /user/:id
 * @apiName GetUser
 */
@apiGroup
@apiGroup name
定义方法文档块属于哪个组。组将用于生成的输出中的主导航。例如:login和register接口都可以划分到User组。
| 名称 | 描述 | 
|---|---|
| name | 组的名称。也用作导航标题。 | 
eg:
/**
 * @api {get} /user/:id
 * @apiGroup User
 */
@apiHeader
@apiHeader [(group)] [{type}] [field=defaultValue] [description]
描述API-Header传递的参数,例如用于授权。
| 名称 | 描述 | 
|---|---|
| group | 参数组别 | 
| type | 参数类型 | 
| field | 参数名 | 
| description | 描述 | 
eg:
/**
 * @api {get} /user/:id
 * @apiHeader {String} access-key Users unique access-key.
 */
@apiParam
@apiParam [(group)] [{type}] [field=defaultValue] [description]
用来描述API传参值
| 名称 | 描述 | 
|---|---|
| group | 参数组别 | 
| type | 参数类型 | 
| field | 参数名 | 
| description | 描述 | 
eg:
 /** @apiParam (params) {int} time 时间戳(用于判断请求是否超时)
   * @apiParam (params) {String} token 确认来访者身份
   * @apiParam (params) {String} user_name 手机号或者邮箱
   * @apiParam (params) {String} user_pwd MD5加密的用户密码
   */
@apiSuccess
@apiSuccess [(group)] [{type}] field [description]
成功返回参数。用法和@apiParam类似。个人认为@apiSuccess有点多余,使用@apiSuccessExample就足够了。
@apiSuccessExample
@apiSuccessExample [{type}] [title] example
成功返回消息的示例,作为预格式化代码输出。
eg:
/**
 * @api {get} /user/:id
 * @apiSuccessExample {json} Success-Response:
 *     HTTP/1.1 200 OK
 *     {
 *       "firstname": "John",
 *       "lastname": "Doe"
 *     }
 */
@apiError
错误返回参数。用法和@apiSuccess类似
@apiErrorExample
错误返回消息的示例,作为预格式化代码输出。用法和@apiSuccessExample类似。
@apiVersion
@apiVersion version
设置文档块的版本。版本也可用于@apiDefine。
eg:
/**
 * @api {get} /user/:id
 * @apiVersion 1.6.2
 */
@apiIgnore
@apiIgnore [hint]
将它放在一个块的顶部。@apiIgnore将无法解析块。如果您在源代码中留下过时或未完成的方法并且您不希望将其发布到文档中,那么它很有用。
| 名称 | 描述 | 
|---|---|
| hint | 用于提示为什么忽略这个块。 | 
eg:
/**
 * @apiIgnore Not finished Method
 * @api {get} /user/:id
 */
举个栗子
来一个完整的例子
/**
 * @api {post} /user/login 用户登录
 * @apiName login
 * @apiGroup User
 * @apiParam (params) {int} time 时间戳(用于判断请求是否超时)
 * @apiParam (params) {String} token 确认来访者身份
 * @apiParam (params) {String} user_name 手机号或者邮箱
 * @apiParam (params) {String} user_pwd MD5加密的用户密码
 * @apiSuccessExample Success-Response:
 *  {
 *      "code": 200,
 *      "msg": "登录成功!",
 *      "data": {
 *           'uid': 1, //用户ID
 *           'user_phone': '13011111111', //用户手机号
 *           'user_nickname': '小明', //用户昵称
 *           'user_email': '123456789@163.com', //用户邮箱
 *           'user_rtime': 1501414343 //用户注册时间
 *  }
 *
 */
效果:

原文地址:https://segmentfault.com/a/1190000015567561
apidoc利用代码注释书写文档的更多相关文章
- 《从零开始学Swift》学习笔记(Day 57)——Swift编码规范之注释规范:文件注释、文档注释、代码注释、使用地标注释
		原创文章,欢迎转载.转载请注明:关东升的博客 前面说到Swift注释的语法有两种:单行注释(//)和多行注释(/*...*/).这里来介绍一下他们的使用规范. 1.文件注释 文件注释就在每一个文件开头 ... 
- C# 代码注释规范文档
		C# 提供一种机制,使程序员可以使用含有 XML 文本的特殊注释语法为他们的代码编写文档.在源代码文件中,具有某种格式的注释可用于指导某个工具根据这些注释和它们后面的源代码元素生成 XML.使用这类语 ... 
- 黄聪:利用OpenXml生成Word2007文档(转)
		原文:http://blog.csdn.net/francislaw/article/details/7568317 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 一Op ... 
- 利用OpenXml生成Word2007文档
		一.OpenXml简介 利用C#生成Word文档并非一定要利用OpenXml技术,至少可以使用微软提供的Office相关组件来编程,不过对于Office2007(确切的说是Word.Excel和Pow ... 
- springboot+mybatis-puls利用swagger构建api文档
		项目开发常采用前后端分离的方式.前后端通过API进行交互,在Swagger UI中,前后端人员能够直观预览并且测试API,方便前后端人员同步开发. 在SpringBoot中集成swagger,步骤如下 ... 
- 白话SpringCloud | 第十一章:路由网关(Zuul):利用swagger2聚合API文档
		前言 通过之前的两篇文章,可以简单的搭建一个路由网关了.而我们知道,现在都奉行前后端分离开发,前后端开发的沟通成本就增加了,所以一般上我们都是通过swagger进行api文档生成的.现在由于使用了统一 ... 
- 用doxygen风格注释代码生成文档
		目录 用doxygen风格注释代码生成文档 1. 说明 2. 具体操作 2.1 生成头部注释 2.2 安装doxygen 2.3 工程配置 3. 总结 用doxygen风格注释代码生成文档 1. 说明 ... 
- 【技术博客】利用Python将markdown文档转为html文档
		利用Python将markdown文档转为html文档 v1.0 作者:FZK 元素简单的md文件 Python中自带有一个markdown库,你可以直接这样使用 md_file = open(&qu ... 
- springboot利用swagger构建api文档
		前言 Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件.本文简单介绍了在项目中集成swagger的方法和一些常见问题.如果想深入分析项目源码,了解更多内容,见参考资料. S ... 
随机推荐
- 突然所有命令都不能用了, /usr/bin不在path里   .bashrc文件
			export PATH=/usr/bin:/bin .bashrc文件中多一个空格都不行啊所有的问题都是因为复制的时候多了空格,简直无语,用了两个小时 
- wamp2.5版本配置多端口虚拟主机
			1.保证httpd.conf下 LoadModule php5_module "D:/E/php/wamp/bin/php/php5.5.12/php5apache2_4.dll" ... 
- C语言归并排序(合并排序)算法及代码
			归并排序也称合并排序,其算法思想是将待排序序列分为两部分,依次对分得的两个部分再次使用归并排序,之后再对其进行合并.仅从算法思想上了解归并排序会觉得很抽象,接下来就以对序列A[0], A[l]…, A ... 
- hdu1151 Air Raid 基础匈牙利
			#include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> ... 
- Rsync 实现远程同步
			介绍 rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部 ... 
- c 浮点科学计数法
			浮点数 比喻1e1 e后面跟的是10的指数(也就是1的10次方,e表示10次方),f表示浮点数 1e1表示1×10¹,其实就是10 再例如5e2f,表示5×10²,也就是500 =========== ... 
- 数组Reduce的应用
			数组Reduce的应用 参考 简单应用 var arr = [1,2,3,4,5] var sum = arr.reduce(function (prev, cur, index, arr) { co ... 
- Invitation Cards  POJ 1511  SPFA || dij + heap
			http://poj.org/problem?id=1511 求解从1去其他顶点的最短距离之和. 加上其他顶点到1的最短距离之和. 边是单向的. 第一种很容易,直接一个最短路, 然后第二个,需要把边反 ... 
- mysql replication错误常见处理
			大部分的错误,都是日志错误 日志本身的错误 主日志和中继日志都可能出错,可以使用mysqlbinlog来读一下mysqlbinlog mysql-bin.000007>/dev/null ##只 ... 
- HBase表结构设计--练习篇
			一.表结构操作 1.建立一个表scores,有两个列族grad和course [hadoop@weekend01 ~]$ hbase shell hbase(main):006:0> creat ... 
