个人博客同步文章 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

定义方法文档块属于哪个组。组将用于生成的输出中的主导航。例如:loginregister接口都可以划分到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利用代码注释书写文档的更多相关文章

  1. 《从零开始学Swift》学习笔记(Day 57)——Swift编码规范之注释规范:文件注释、文档注释、代码注释、使用地标注释

    原创文章,欢迎转载.转载请注明:关东升的博客 前面说到Swift注释的语法有两种:单行注释(//)和多行注释(/*...*/).这里来介绍一下他们的使用规范. 1.文件注释 文件注释就在每一个文件开头 ...

  2. C# 代码注释规范文档

    C# 提供一种机制,使程序员可以使用含有 XML 文本的特殊注释语法为他们的代码编写文档.在源代码文件中,具有某种格式的注释可用于指导某个工具根据这些注释和它们后面的源代码元素生成 XML.使用这类语 ...

  3. 黄聪:利用OpenXml生成Word2007文档(转)

    原文:http://blog.csdn.net/francislaw/article/details/7568317 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[-] 一Op ...

  4. 利用OpenXml生成Word2007文档

    一.OpenXml简介 利用C#生成Word文档并非一定要利用OpenXml技术,至少可以使用微软提供的Office相关组件来编程,不过对于Office2007(确切的说是Word.Excel和Pow ...

  5. springboot+mybatis-puls利用swagger构建api文档

    项目开发常采用前后端分离的方式.前后端通过API进行交互,在Swagger UI中,前后端人员能够直观预览并且测试API,方便前后端人员同步开发. 在SpringBoot中集成swagger,步骤如下 ...

  6. 白话SpringCloud | 第十一章:路由网关(Zuul):利用swagger2聚合API文档

    前言 通过之前的两篇文章,可以简单的搭建一个路由网关了.而我们知道,现在都奉行前后端分离开发,前后端开发的沟通成本就增加了,所以一般上我们都是通过swagger进行api文档生成的.现在由于使用了统一 ...

  7. 用doxygen风格注释代码生成文档

    目录 用doxygen风格注释代码生成文档 1. 说明 2. 具体操作 2.1 生成头部注释 2.2 安装doxygen 2.3 工程配置 3. 总结 用doxygen风格注释代码生成文档 1. 说明 ...

  8. 【技术博客】利用Python将markdown文档转为html文档

    利用Python将markdown文档转为html文档 v1.0 作者:FZK 元素简单的md文件 Python中自带有一个markdown库,你可以直接这样使用 md_file = open(&qu ...

  9. springboot利用swagger构建api文档

    前言 Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件.本文简单介绍了在项目中集成swagger的方法和一些常见问题.如果想深入分析项目源码,了解更多内容,见参考资料. S ...

随机推荐

  1. 黑客攻防技术宝典web实战篇:攻击应用程序架构习题

    猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 随书答案. 1. 假设受攻击的应用程序使用两台不同的服务器:一台应用程序服务器和一台数据库服务器.已经发现一 ...

  2. Luogu P2170选学霸【并查集+背包】By cellur925

    题目传送门 开始看到本题完全认为就是个彻头彻尾的并查集,只要把实力相当的人都并到一个集合中,最后再找一共有多少联通块即可. 后来发现这是大错特错的qwq.因为选了一个集合中的某人,那这个集合中所有人就 ...

  3. mysql文件系统

    1 磁盘划分 在一台mysql服务器上,一般是sda做系统,sdb做数据,sdc做日志. 2 磁盘调度策略 linux默认调度策略是cfq,mysql上一般改为deadline echo 'deadl ...

  4. 第02课 操作系统及Linux 系统介绍

    1.操作系统介绍 操作系统(Operating System,简称OS),是计算机系统中必不可少的基础系统软件,它是应用程序运行以及用户操作必备的基础环境支撑,是计算机系统的核心. 操作系统的作用是管 ...

  5. 141 Linked List Cycle 环形链表

    给定一个链表,判断链表中否有环.补充:你是否可以不用额外空间解决此题?详见:https://leetcode.com/problems/linked-list-cycle/description/ J ...

  6. AO-XXXX

    一 AO4419:应用于开关应用或PWM应用的场效应管.

  7. Coco dfs 或者 状压dp。...

    C -- Coco Time Limit:1s Memory Limit:64MByte Submissions:148Solved:85 DESCRIPTION Coco just learned ...

  8. gbk编码文件传输json实例

    cline.php <?php $str='此地无银三百两'; $str = iconv('gbk', 'utf-8', $str); //Json只支持utf-8编码,如果不进行转码的话,服务 ...

  9. P3372 【模板】线段树 1 区间查询与区间修改

    题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别表示该数列数字的个数和操作的总个 ...

  10. Android学习笔记(十六) ContentProvider

    1.相关概念 ContentProvider:不同应用程序之间进行数据交换的标准API:程序“暴露”数据的方法. ContentResolver:一个程序访问另一个程序被“暴露”的数据的方法. Uri ...