apidoc是通过在方法上的注释生成文档,不基于任何框架,对代码没有侵入性,只需要写好相关的注释即可,并且它仅通过写简单的配置就可以生成高颜值的api接口页面。

准备工作

apidoc基于node.js,需要先行安装node.js,nodejs官网:node.js


安装apidoc

npm install apidoc -g

文档注释

官网详细参考:     apidoc 示例 ,下面罗列出常用注解

  • @api {method} path {title}

method:请求方法(get/post/put/delete/....)
        path:请求路径
        title:标题(可选)

  • @apiDescription text

text:说明

  • @apiGroup name

name:组名

  • @apiParam {type} name text

type: 参数类型
        name:参数名称
        text: 参数说明

示例

首先写配置文件

在项目的根路径下新建一个apidoc.json文件

{"name": "基于RESTful风格API文档","version": "1.0.0","description": "图书apiDoc示例"
}

更多配置参考官网:http://apidocjs.com/#configuration

方法上注释

package edu.uestc.avatar.controller;import edu.uestc.avatar.domain.Book;
import edu.uestc.avatar.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;@RestController
public class BookRestController {@Autowired private BookService service;/*** @api {post} /book 保存图书信息* @apiGroup Book* @apiParam {json} book 图书信息json格式* @apiParamExample {json} 参数格式:* {*     "title": "spring boot基础",*     "author": "tiger",*     "sellPrice": 38.0,*     "marketPrice": 80.0,*     "buyPrice": 10.0,*     "coverPath": "http://img.avatar.com:8080/files/images/连城诀.jpg",*     "publisher": "UESTC",*     "publishedDate": "2010-10-20"* }* @apiVersion 1.0.0** @apiSuccessExample {json} 主键回填后的图书信息:* {*         "id": 13,*         "title": "书剑恩仇录",*         "author": "金庸",*         "sellPrice": 88.0,*         "marketPrice": 200.0,*         "buyPrice": 18.0,*         "coverPath": "http://img.avatar.com:8080/files/images/书剑恩仇录.jpg",*         "publishedDate": "2022-05-02",*         "publisher": "三联出版社",*         "intro": "",*         "savedPrice": 112.0*     }*/@PostMapping("/book")public Book save(@RequestBody Book book){return service.save(book);}/*** @api {delete} /book/:id 删除图书* @apiDescription 根据图书id删除图书信息* @apiParam {int} id 图书唯一编号* @apiGroup Book* @apiVersion 1.0.0* @apiSuccessExample {json} 删除前的图书信息* {*     "id": 13,*     "title": "书剑恩仇录",*     "author": "金庸",*     "sellPrice": 88.0,*     "marketPrice": 200.0,*     "buyPrice": 18.0,*     "coverPath": "http://img.avatar.com:8080/files/images/书剑恩仇录.jpg",*     "publishedDate": "2022-05-02",*     "publisher": "三联出版社",*      "intro": "",*      "savedPrice": 112.0*  }**/@DeleteMapping("/book/{id}")public Book removeById(@PathVariable Integer id){return service.removeById(id);}/*** @api {put} /book 修改图书信息* @apiGroup Book* @apiParam {json} book 图书信息json格式* @apiParamExample {json} 参数格式,需要指定图书id:* {*     "id": 10,*     "title": "spring boot基础",*     "author": "tiger",*     "sellPrice": 38.0,*     "marketPrice": 80.0,*     "buyPrice": 10.0,*     "coverPath": "http://img.avatar.com:8080/files/images/连城诀.jpg",*     "publisher": "UESTC",*     "publishedDate": "2010-10-20"* }* @apiVersion 1.0.0** @apiSuccessExample {json} 修改前的图书信息:* {*         "id": 10,*         "title": "书剑恩仇录",*         "author": "金庸",*         "sellPrice": 88.0,*         "marketPrice": 200.0,*         "buyPrice": 18.0,*         "coverPath": "http://img.avatar.com:8080/files/images/书剑恩仇录.jpg",*         "publishedDate": "2022-05-02",*         "publisher": "三联出版社",*         "intro": "",*         "savedPrice": 112.0*     }*/@PutMapping("/book")public Book edit(@RequestBody Book book){return service.update(book);}/*** @api {get} /book/:id 根据图书编号加载图书信息* @apiGroup Book* @apiParam {int} id 图书编号* @apiVersion 1.0.0** @apiSuccessExample {json} 加载到的图书信息:* {*         "id": 10,*         "title": "书剑恩仇录",*         "author": "金庸",*         "sellPrice": 88.0,*         "marketPrice": 200.0,*         "buyPrice": 18.0,*         "coverPath": "http://img.avatar.com:8080/files/images/书剑恩仇录.jpg",*         "publishedDate": "2022-05-02",*         "publisher": "三联出版社",*         "intro": "",*         "savedPrice": 112.0*     }*/@GetMapping("/book/{id}") public Book findById(@PathVariable Integer id){return service.findById(id);}/*** @api {get} /book 加载所有图书信息* @apiGroup Book* @apiVersion 1.0.0** @apiSuccessExample {json} 加载到的图书信息:* [{*         "id": 10,*         "title": "书剑恩仇录",*         "author": "金庸",*         "sellPrice": 88.0,*         "marketPrice": 200.0,*         "buyPrice": 18.0,*         "coverPath": "http://img.avatar.com:8080/files/images/书剑恩仇录.jpg",*         "publishedDate": "2022-05-02",*         "publisher": "三联出版社",*         "intro": "",*         "savedPrice": 112.0*     }]*/@GetMapping("/book") public List<Book> list(){return service.list();}
}

用apidoc命令生成文档

apidoc -i 项目路径 -o 输出路径

到输出路径下,可以看到生成了文档文件,打开index.html

使用apidoc生成文档相关推荐

  1. apidoc生成文档时报错

    问题描述 在书写完接口的时候,使用apidoc来生成我们所需要的接口文档的时候,输入apidoc.cmd -i ./constroller -o ./doc ,其中constroller 指定读取源文 ...

  2. 使用 apiDoc 为你的Node.js API 生成文档

    翻译: 疯狂的技术宅 原文:jonathas.com/documenting- 未经许可,禁止转载! 当你为其他开发人员(前端,桌面,移动等)开发 API 时,需要生成一份风格良好的文档,以便他们知道 ...

  3. Objective-C自动生成文档工具:appledoc

    作者 iOS_小松哥 关注 2016.12.13 15:47* 字数 919 阅读 727评论 10喜欢 35 由于最近琐事比较多,所以好久没有写文章了.今天我们聊一聊Objective-C自动生成文 ...

  4. Objective-C 自动生成文档工具:appledoc

    来源:iOS_小松哥 www.jianshu.com/p/fd4d8d6b6177 如有好文章投稿,请点击 → 这里了解详情 由于最近琐事比较多,所以好久没有写文章了.今天我们聊一聊Objective ...

  5. java前端目录_[Java教程]前端那点事儿——Tocify自动生成文档目录

    [Java教程]前端那点事儿--Tocify自动生成文档目录 0 2016-06-29 22:00:07 今天偶然间看到文档服务器有一个动态目录功能,点击目录能跳转到指定的位置:窗口滑动也能自动更新目 ...

  6. 快速优雅的为React组件生成文档

    在开发React组件时我们通常需要处理2个问题: 实例化这个组件以便调试 为这个组件编写使用文档以便更好的让别人知道怎么使用这个组件 最原始的方法莫过于开发时建一个页面用于调试,开发完后再为其手写文档 ...

  7. linux c/c++ 代码使用 doxygen 自动生成文档

    www.doxygen.org 的使用非常方便,下面分成2步介绍一下 1. 注释风格,需要在c/c++代码中按照下面的风格添加注释,基本上还是很顺手的 C++的注释风格 主要使用下面这种样式:即在注释 ...

  8. 使用DocFX生成文档

    使用DocFX命令行生成文档 使用docfx 命令 1.下载 https://github.com/dotnet/docfx/releases 2.使用 创建初始项目 docfx init -q 此命 ...

  9. docwizard c++程序文档自动生成工具_如何开发一个基于 TypeScript 的工具库并自动生成文档

    为什么用 TypeScript? TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. Any ...

最新文章

  1. python画笑脸-python 学习笔记——学会用turtle画笑脸
  2. 【easysnmp】python snmp IF-MIB::ifPhysAddress messy code,解析mac地址乱码
  3. perl语言编程 第四版_2020年,5 种 将死的编程语言
  4. matlab 细化函数,MATLAB图像处理工具箱函数(细化篇).doc
  5. 为了完成月入三万的目标,我都做了哪些准备?
  6. 使用FFMPEG类库分离出多媒体文件中的H.264码流
  7. zw版【转发·台湾nvp系列Delphi例程】HALCON HighpassImage
  8. TypeScript算法专题 - [双链表1] - 双链的概念及其实现
  9. Linux学习笔记-项目部署01
  10. javascript--一个简洁的管理菜单
  11. Padavan设置无线中继
  12. linux监控内存情况同时清理内存脚本
  13. WEB学生网页作业【HTML+CSS】静态网页期末大作业课程设计
  14. 9.1 Python 绝对路径与相对路径
  15. PMP之项目质量管理
  16. ld.exe: cannot find -l?eclipse上用C/C++时,如何链接静态库?
  17. c语言题库-1012循环结构习题:公式求π值
  18. RRT、RRT-connect、RRT*等算法、A*等等路径规划算法
  19. 浅谈深度链接除了跳转还能做些什么?—MobLink
  20. 数据库bigint转为JAVA中的String

热门文章

  1. cad转kml代码 lisp_CAD图形数据转成kml导入谷歌地球
  2. 内网环境安装python所需的模块
  3. 可编辑属性html,设置contenteditable属性可编辑HTML标签的内容(可代替textarea)
  4. 富文本wangeditor图片自定义上传及图片删除
  5. 吊打面试官之Dubbo17问
  6. Android 6.0 仿支付宝主页UI实战案例
  7. svn提交代码时忽略node_modules文件夹提交
  8. 《圈外课程学习记录》剧本杀:如何申请加薪
  9. 10G 82599EB 网卡测试优化 kernel
  10. Linux系统启动+常用命令2019.8.1