背景

之前做前端的时候,后端同学仗着自己是老同志,不给我接口文档

苦逼如我,需要拿着笔坐在他的旁边,听他口述

写下需要的api接口url和参数等等

现在自己做后端了,那不能这样子胡作非为了

自己吃的苦,怎能给其他同学吃呢?

这时候,apiDoc你值得拥有,稳稳的输出一篇优质的接口文档

安装apidoc

官网上是全局安装,我是喜欢安装到项目中,这样可以在另一个环境下, npm install 就可以下载有所有依赖包

npm install apidoc --save-dev/-D

复制代码

写注释

注册接口的注释

/**

* @api {post} /v1/auth/register User Register

* @apiName UserRegister

* @apiGroup userAuthentication

*

* @apiParam {String} username New user's username.

* @apiParam {String} password New user's password.

*

* @apiSuccess {String} username The username of the register user.

* @apiSuccess {string} message The registering success info.

*

* @apiSuccessExample Success-Response:

* HTTP/1.1 200 OK

* {

* "username": "username",

* "message": "User registered successful"

* }

*

* @apiError REGISTER_FAILURE The register failure.

*

* @apiErrorExample Error-Response:

* HTTP/1.1 500 Internal Server Error

* {

* "err": "REGISTER_FAILURE",

* "message": "User register failure!"

* }

*/

复制代码

删除接口的注释

/**

* @api {delete} /v1/auth/user/ User delete

* @apiName UserDelete

* @apiGroup userAuthentication

*

* @apiParam {String} username User's username.

* @apiParam {String} executor Executor of this operation.

*

* @apiSuccess {String} username The username of the deleted user.

* @apiSuccess {string} message The message if deleting successful.

*

* @apiSuccessExample Success-Response:

* HTTP/1.1 200 OK

* {

* "username": "username",

* "message": "Delete User Successful"

* }

*

* @apiError NOT_LOGIN The register failure.

*

* @apiErrorExample Error-Response:

* HTTP/1.1 401 Unauthorized

* {

* "err": "NOT_LOGIN",

* "message": "User has not logon in!"

* }

*/

复制代码

写入命令

将 apidoc -i routers/ 写入package.json的命令中

routers文件夹下都是路由文件

"scripts": {

"test": "echo \"Error: no test specified\" && exit 1",

"lint": "eslint .",

"apidoc": "apidoc -i routers/",

"dev": "node --harmony index.js"

},

复制代码

出现了 {"message":"Done.","level":"info"} ,即成功了

执行命令

执行 npm run apidoc 即可拿到接口文档

这样,在项目中就会出现 doc 文件夹

生成文档

这样, doc 文件夹中包含该页面的所有材料

打开 index.html

热乎乎的接口文档诞生了

结构解读

一个静态的文档很漂亮的生成了,但是实际控制这个方法的是api_data.js和api_project.js。但是实际上的数据显示是由api_data.json和api_project.json这两个 json 文件。

所以在支持将其他json格式转换成api_data.json和api_project.json,把apidoc生成的这两个文件进行替换,然后替换js文件,直接生产静态文档。

命令行界面

查看所有命令

apidoc -h

复制代码

选项

作用

-f --file-filters

用于选择应分析的文件的regex筛选器(可以使用多个-f)。(默认值:[])

-e, --exclude-filters

用于选择不应解析的文件/目录的regex筛选器(可以使用many-e)。(默认值:[])

-i, --input

输入/源目录名。(默认值:[])

-o, --output

输出目录。(默认:“./doc/”)

-t, --template

对输出文件使用模板。(默认值:“/usr/local/lib/node_modules/apidoc/template/”)

-c, --config

包含配置文件(apidoc.json)的目录路径。(默认值:“./”)

-p, --private

Include private APIs in output.

-v, --verbose

详细调试输出。

--debug

显示调试消息。

--color

关闭日志颜色。

--parse

只解析文件并返回数据,不创建文件。

--parse-filters

可选的用户定义筛选器。格式名=文件名(默认值:[])

--parse-languages

可选的用户定义语言。格式名=文件名(默认值:[]

--parse-parsers

可选的用户定义的分析器。格式名=文件名(默认值:[])

--parse-workers

可选的用户定义的工作人员。格式名=文件名(默认值:[])

--silent

关闭所有输出。

--simulate

执行但不写入任何文件。

--markdown [markdown]

关闭默认标记分析器或将文件设置为自定义分析器。(默认值:真)

--line-ending

关闭自动检测行尾。允许值:lf,cr,crlf。

--encoding

设置源代码的编码。[UTF8]格式。(默认值:“utf8”)

-h, --help

输出使用信息

所用的的apiDoc的参数(翻译)

@api

@api {method} path [title]

复制代码

必需的! 如果没有该指示器,apidoc解析器将忽略文档块。 唯一的例外是 @apidefine 定义的文档块,它们不需要 @api 。

Usage: @api {get} /user/:id Users unique ID.

Name

Description

method

Request method name: DELETE, GET, POST, PUT, ...

path

Request Path.

title optional

A short title. (used for navigation and article header)

/**

* @api {get} /user/:id

*/

复制代码

@apiName

@apiName name

复制代码

应始终使用。 定义方法文档块的名称。名称将用于生成的输出中的子导航。结构定义不需要 @apinname 。 用法: @apinname getuser

Name

Description

name

方法的唯一名称。可以定义相同的名称和不同的 @apiversion 。格式: method+path (例如 get+user ),只有一个建议,您可以根据需要命名。也可以用作导航标题。

/**

* @api {get} /user/:id

* @apiName GetUser

*/

复制代码

@apiGroup

@apiGroup name

复制代码

应始终使用。 定义方法文档块所属的组。组将用于生成的输出中的主导航。结构定义不需要 @apigroup 。 用法: @apigroup user

Name

Description

name

组名称。也使用导航标题。

/**

* @api {get} /user/:id

* @apiGroup User

*/

复制代码

@apiParam

@apiParam [(group)] [{type}] [field=defaultValue] [description]

复制代码

描述传递给API方法的参数。

用法: @apiparam(mygroup)number id users unique id 。

Name

Description

(group)optional

所有参数都将按此名称分组。如果没有组,则设置默认参数。您可以使用 @apidefine 设置标题和说明。

{type}optional

参数类型,如 {Boolean} , {Number} , {String} , {Object} , {String[]}

{type{size}}optional

变量大小的信息 {string{..5}} 最大值为5的字符串. {string{2..5}} 最小2最大为5的字符串. {number{100-999}} 在100到999的i数字.

{type=allowedValues}optional

有关变量允许值的信息。 {string="small"} 包含 small 的字符串, {string="small","huge"} 包含 small / huge 的字符串, {number=1,2,3,99} 一个允许值是1,2,3,和99的数字, {string {..5}="small","huge"} 最多5个字符的字符串,只包含单词“small”或“mage”。

field

变量名称.

[field]

带括号的fieldname将变量定义为可选变量。

=defaultValueoptional

参数默认值。

descriptionoptional

字段的说明。

/**

* @api {get} /user/:id

* @apiParam {Number} id Users unique ID.

*/

/**

* @api {post} /user/

* @apiParam {String} [firstname] Optional Firstname of the User.

* @apiParam {String} lastname Mandatory Lastname.

* @apiParam {String} country="DE" Mandatory with default value "DE".

* @apiParam {Number} [age=18] Optional Age with default 18.

*

* @apiParam (Login) {String} pass Only logged in users can post this.

* In generated documentation a separate

* "Login" Block will be generated.

*/

复制代码

@apiSuccess

@apiSuccess [(group)] [{type}] field [description]

复制代码

成功返回参数。 用法: @apiSuccess {String} firstname Firstname of the User 。

Name

Description

(group)optional

所有参数都将按此名称分组。

如果没有组,则设置默认成功200。 您可以使用@apidefine设置标题和说明。 {type}optional|返回类型,如 {Boolean} , {Number} , {String} , {Object} , {String[]} field|返回标识符(返回成功代码)。 description optional|字段的说明。

/**

* @api {get} /user/:id

* @apiSuccess {String} firstname Firstname of the User.

* @apiSuccess {String} lastname Lastname of the User.

*/

复制代码

Example with (group), more group-examples at @apiSuccessTitle:

/**

* @api {get} /user/:id

* @apiSuccess (200) {String} firstname Firstname of the User.

* @apiSuccess (200) {String} lastname Lastname of the User.

*/

复制代码

Example with Object:

/**

* @api {get} /user/:id

* @apiSuccess {Boolean} active Specify if the account is active.

* @apiSuccess {Object} profile User profile information.

* @apiSuccess {Number} profile.age Users age.

* @apiSuccess {String} profile.image Avatar-Image.

*/

复制代码

Example with Array:

/**

* @api {get} /users

* @apiSuccess {Object[]} profiles List of user profiles.

* @apiSuccess {Number} profiles.age Users age.

* @apiSuccess {String} profiles.image Avatar-Image.

*/

复制代码

@apiSuccessExample

@apiSuccessExample [{type}] [title]

example

复制代码

成功返回消息的示例,输出为预先格式化的代码。 用途: @apiSuccessExample {json} Success-Response: { "content": "This is an example content" }

Name

Description

typeoptional

响应格式

titleoptional

示例的简短标题

example

详细示例,支持多行

/**

* @api {get} /user/:id

* @apiSuccessExample {json} Success-Response:

* HTTP/1.1 200 OK

* {

* "firstname": "John",

* "lastname": "Doe"

* }

*/

复制代码

@apiError

@apiError [(group)] [{type}] field [description]

复制代码

成功返回参数。 用法: @apiError UserNotFound 。

Name

Description

(group)optional

所有参数都将按此名称分组。如果没有组,则设置默认错误 4xx 。您可以使用 @apidefine 设置标题和说明。

{type}optional

返回类型,如 {Boolean} , {Number} , {String} , {Object} , {String[]}

field

返回标识符(返回失败代码)。

description optional

字段的说明。

/**

* @api {get} /user/:id

* @apiSuccess {String} firstname Firstname of the User.

* @apiSuccess {String} lastname Lastname of the User.

*/

复制代码

@apiErrorExample

@apiErrorExample [{type}] [title]

example

复制代码

失败返回消息的示例,输出为预先格式化的代码。 用途: @apiErrorExample {json} Error-Response: This is an example.

Name

Description

typeoptional

响应格式

titleoptional

示例的简短标题

example

详细示例,支持多行

/**

* @api {get} /user/:id

* @apiErrorExample {json} Error-Response:

* HTTP/1.1 404 Not Found

* {

* "error": "UserNotFound"

* }

*/

复制代码

c语言api接口文档模板,apiDoc生成接口文档,不费吹灰之力相关推荐

  1. apiDoc生成接口文档,不费吹灰之力

    一个学习编程技术的公众号.每天推送高质量的优秀博文.开源项目.实用工具.面试技巧.编程学习资源等等.目标是做到个人技术与公众号一起成长.欢迎大家关注,一起进步,走向全栈大佬的修炼之路 效果 背景 之前 ...

  2. freemarker实现word文档模板动态生成

    携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第29天,点击查看活动详情 1.写在前面 很多时候,我们可能需要根据一个word模板,动态生成,我们所需要得一个word文档. 那这 ...

  3. Freemarker - 根据模板动态生成word文档

    文章目录 Freemarker 根据模板动态生成word文档 Freemarker 介绍: Freemarker 使用: freemarker加载模板目录的方法 参考资料 Freemarker 根据模 ...

  4. VC++ 多文档模板(添加新文档模板)编程实例

    现在假设要做一个VC++多文档程序,一个文档类型处理txt文件,一个文档类型处理图片文件: 新加一个Img的文档模板类型: 先新建一个多文档工程,名为duodocDemo1: 在菜单选择 插入-类: ...

  5. c语言调用pdf文档,使用PDFLib生成PDF文档方法介绍(C语言版)

    本文简单介绍了PDFLib生成PDF文档(C语言版)的基本使用方法. 1.基本环境 ① 打开.关闭.文档信息设定: 新建PDFLib对象,PDF_new() 设定错误处理的方式,PDF_set_par ...

  6. velocity模板技术生成word文档

    本文介绍采用velocity技术在Java中生成word文档的方法. 1.新建一个word文档,编辑内容如下: 2.将上述word文档另存为htm格式的文件 3.新建一个Java Project项目v ...

  7. java实现保存合同模板_Java中常用到的文件操作那些事(一)——替换doc文档模板,生成真实合同案例...

    工作中,我们时常会遇到一些操作文件的操作,比如在线生成合同模板,上传/下载/解析Excel,doc文档转为pdf等操作.本文就已工作中遇到的在线生成合同为例,简要地介绍一种文档替换写法. 本文目的:给 ...

  8. java根据模板动态生成word文档

    模板文档 首先,需要创建一个word模板,我的模板例子如下: 动态生成的文档 根据java代码动态的修改模板生成自己想要的文档,结果如下: 具体代码 代码操作如下:其中进行了文本的替换,图片的插入,以 ...

  9. Chimm.Excel —— 使用Java 操作 excel 模板文件生成 excel 文档

    内容已不在此处更新,请移步https://blog.csdn.net/chimmhuang/article/details/111251115 1. 项目介绍 Chimm.Excel 是什么? 该程序 ...

  10. Aspose.Word企业案例:Progetto Adele 使用 Aspose API 从预定义模板自动生成 Word 和 PDF 文件

    关于 Progetto Adele Progetto Adele是一家在物流和国际货运市场运营的软件公司.它成立于 2003 年,由在物流和货运公司软件开发方面具有长期经验的人员管理.在过去的 15 ...

最新文章

  1. 10亿int型数,统计只出现一次的数
  2. 如何在同一台计算机上安装多个Java版本
  3. x86_64 arm制linux-gcc,arm-linux-gcc 制作
  4. [转]Best Practices for Speeding Up Your Web Site
  5. 1号店案例html源码_手把手教一起写jQuery版mini源码,分析jQuery的优势
  6. 图灵奖得主 John E. Hopcroft 等 300 余位 AI 学者“穿越”回宋代开国际 AI 大会,这场面你见过吗?
  7. 清华计算机科学与技术专业收分,2016年清华大学计算机科学与技术专业最低分是多少?...
  8. c语言学生管理p1指向编译错误,在ubuntu下用C语言编写一个学生管理系统,编译时出错,紧急求救!!!...
  9. matlab求出拟合曲线的方程,已知数据点,拟合曲线并得到曲线方程。谢谢
  10. 瑞利信道的多普勒谱的原理与MATLAB仿真
  11. 格雷码和二进制码的互相转换
  12. Python 正则表达式 re模块 groups/group
  13. 对硬盘进行分区时,GPT和MBR有什么区别?
  14. 基础信念(二):框架、专注、勇气
  15. Servlet、ServletConfig、ServletContext
  16. 如何设置CentOS 7获取动态ip地址
  17. 洛谷 P1073 最优贸易 (分层图状态转移+SPFA,求最长路径;另附某dalao的超短代码:暴力+动规)
  18. 【OpenFPGA安装】OpenFPGA安装及常见问题总结
  19. Mapper的xml文件基础语法笔记,增删改查,遍历
  20. blender 长度单位设置

热门文章

  1. ST电机库的FOC部分解读笔记
  2. AccelStepper步进电机库简介操控28BYJ-48步进电机
  3. 数学函数图像软件-Graph之小技巧
  4. 输入九九乘法表c语言,九九乘法表的输入(c语言)
  5. 利用模板导出文件(一)之XLSTransformer导出excel文件
  6. 模糊神经网络算法matlab,模糊神经网络算法原理
  7. html自动增加vbs代码,vbs烟花代码
  8. vc2005运行库彻底卸载_VC运行库安装卸载工具-Visual C ++ AIO(VC运行库安装卸载工具)下载 v2019.05.21官方版--pc6下载站...
  9. 数据结构严蔚敏清华大学pdf_2021年清华(清华大学)电子信息考研
  10. 彼之蜜糖,我之砒霜;彼之敝履,吾之瑰宝