ApiDoc YAPI Swagger 编写接口文档

本文介绍如何使用apidoc工具生成RESTful风格的Web API文档,包括安装、配置及使用方法,并涉及Markdown和PDF文档的导出流程。

ApiFox

Apifox 更深入洞察国内用户的 API 协作需求。类似API web系统。可以私有化部署

ApiDoc

apidoc支持外部接口jsonUrl生成接口文档支持html和markdown两种格式,可以使用Word转换为doc和pdf文档。一个静态的文档很漂亮的生成了,但是实际控制这个现实的是api_data.js和api_project.js。但是实际上的数据显示是由api_data.json和api_project.json这两个json文件。

生成一个REST风格的Web API文档。

安装apidocjs

npm i -f install apidoc -g

#npm install apidoc-markdown

查看是否安装成功

apidoc -h

生成文档必须有.json 文件和带有Javadoc风格注释(可以在C#, Go, Dart, Java, JavaScript, PHP, TypeScript等语言中使用)的文件。

[root@centos php]# ls
apidoc.json  test.php
{
  "name": "apidoc-例子",
  "version": "0.3.0",
  "description": "apiDoc example project",
  "title": "apidoc-用户接口文档",
  "url": "https://[base_domain]/",
  "sampleUrl" : "https://[base_domain]/api/v1" //发送请求示例
  "order": [
    "getUser",
    "getList"
  ],
  "template": {
    "withCompare": true,
    "withGenerator": true
  }
}
<?php
/**
 * @apiDefine User 测试apiGroup名字
 */

/**
 * @api {get} ?m=content&c=api&a=user 得到用户信息
 *
 * @apiHeader {String} access-key Users unique access-key.
 *
 * @apiVersion 0.2.2
 *
 * @apiName getUser
 * @apiGroup User
 * @apiDescription 接口描叙,可以写多行.
 *
 * @apiParam {Number} id Users unique ID.
 * @apiSampleRequest off 
 */
 function find(){}
 ?>

然后直接运行命令apidoc, 然后会直接默认生成一个doc文件目录,当然可以指定一下(用i和o命令 即input和output)

/**
 * @api {get} /user/:id
 * @apiParam {Number} id Users unique ID.
 */

/**
 * @api {patch,put} /user/:id  更新
 * @apiParam {String} [firstname]  可为空的参数.
 * @apiParam {bool}   sex          性别
 * @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.
 */

在apidoc.json中配置的 sampleUrl: "http://api.github.com"。发送API请求示例 

/**
 * @api {get} /user/:id
 * @apiSampleRequest /test
 */

这将发送API请求

http://api.github.com/test/user/:id

请求参数示例

     * @apiParam {Number} agent_id 代理商ID
     * 
     * @apiParamExample {Number} agent_id
     * 10

接口返回文档注释

* @apiSuccess {int} code 状态码
* @apiSuccess {String} message 消息
* @apiSuccess {Object} data 响应数据对象
* @apiSuccess {String} data.total 数据总数

指定header样例

/**
 * @api {get} /user/:id
 * @apiHeaderExample {json} Header-Example:
 *     {
 *       "Accept-Encoding": "Accept-Encoding: gzip, deflate"
 *     }
 */

指定接口返回值样例

/*
 * @apiSuccessExample {json} 返回样例:
 * {
 * "code": 200,
 * "message": "ok",
 * "data": {
 * "req_header": {
 * "total_pages": 30,
 * "page": 1,
 * "page_size": 10
 * },
 * "req_data": [
 * {
 * "id": "14054",
 * "call_id": "6555397404244537344",
 * "caller_num": "01086482580",
 * "called_num": "01086488907",
 * "caller_area_city": "北京",
 * "called_area_city": "北京",
 * "time_start": "2019-07-12 18:48:54",
 * "time_conn": "2019-07-12 18:48:54",
 * "time_hangup": "2019-07-12 18:49:13",
 * "call_type": "呼入",
 * "call_result": "接通",
 * "hangup_direction": "被叫",
 * "vcc_id": "57",
 * "agent_name": "联通有限公司"
 * }
 * ]
 * }
 * }
 * @apiErrorExample {json} 错误返回:
 * {
 * "code": 14695
 * "message": "数据出错",
 * "data":[]
 * }
 */

  

指定应该解析的文件类型

apidoc -f ".*\\.(js|php)$" 

 整个目录生成文档

apidoc -i /path -o /public/apidoc/

只会生成含有apidoc注释的文件,更新apidoc注释后重新生成需要删除doc目录

Apidoc生成Markdown+PDF接口文档

1.安装apidoc-markdown 

apidoc-markdown是一个根据apidoc输出文件直接生成markdown文件的工具。首先我们需要安装该工具:

npm install apidoc-markdown -g

2.导出Markdown文档 

apidoc-markdown主要命令参数如下:

  • 参数 描述
  • -p, --path 指定apidoc生成的文档目录
  • -o, --output 指定输出的markdown文件路径(包含文件名)
  • -t, --template 指定生成markdown文件的模板文件(EJS模板文件)
apidoc-markdown -p apidoc -o doc_markdown.md

 以上命令为扫描apidoc文件夹下的所有文件然后生成doc_markdown.md文档。

3.Typora导出PDF接口文档 

既然markdown文件都有了,那么导出PDF文件不是更简单了。在这里,寡人推荐一个灰常好用的markdown离线编辑工具——Typora Typora是一款离线轻量Markdown编辑器,该工具非常简洁

但是直接导出的pdf文档可能有问题,因为导出的markdown文件中会存在html标签,导致生成的文档出现很多html标签,非常影响阅读。所以需要对markdown文件进行改造,删除下图示例中的所有html标签。

608.png

删除所有标签后,然后再使用typora生成pdf文档即可。

3.在线网站导出PDF接口文档

复制doc_markdown.md中的内容粘贴到 冷熊简历

YApi

YApi 是高效易用功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、发布、维护 API,YApi 还为用户提供了优秀的交互体验,开发人员只需利用平台提供的接口数据写入工具以及简单的点击操作就可以实现接口的管理。

特性

  • 基于 Json5 和 Mockjs 定义接口返回数据的结构和文档,效率提升多倍
  • 扁平化权限设计,即保证了大型企业级项目的管理,又保证了易用性
  • 类似 postman 的接口调试
  • 自动化测试, 支持对Response断言 (可以利用该yapi的openapi与定时任务结合起来,进行定时的自动化测试)
  • MockServer 除支持普通的随机 mock 外,还增加了 Mock 期望功能,根据设置的请求过滤规则,返回期望数据
  • 支持 postman, har, swagger 数据导入
  • 免费开源,内网部署,信息再也不怕泄露了

Swagger

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法、参数和模型紧密集成到服务器端的代码,允许 API 来始终保持同步。Swagger 让部署管理和使用功能强大的 API 从未如此简单。

要在 Java 项目中使用 Swagger,通常使用的是 Springfox 或 Springdoc(推荐)。以下是一个基于 Springfox 的 Swagger 配置说明

1. 添加依赖

根据你的 pom.xml 文件,以下依赖已经包含

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-ui</artifactId>
    <version>1.7.0</version>
</dependency>

2. 使用 Swagger 注解

使用 @Tag、@Operation、@Schema等注解完善文档

控制器注解

@RestController
@Tag(name = "用户管理", description = "用户接口")
public class UserController {

    @Operation(summary = "获取用户信息", description = "根据用户ID获取用户详细信息")
    @ApiResponses(value = {
        @ApiResponse(responseCode = "200", description = "成功获取用户信息",
                     content = @Content(schema = @Schema(implementation = User.class))),
        @ApiResponse(responseCode = "404", description = "用户未找到",
                     content = @Content)
    })
    @GetMapping("/user")
    public User getUserById(@Parameter(description = "用户ID") @RequestParam Long id) {
        // 实现获取用户逻辑
        return new User();
    }
}

User.class

import io.swagger.v3.oas.annotations.media.Schema;

@Schema(description = "用户实体类")
public class User {

    @Schema(description = "用户的唯一标识")
    private Long id;

    @Schema(description = "用户的姓名")
    private String name;
}

接口输入参数注解

@Schema(description = "通话记录分页查询参数")
@Data
public class BillCdrTrunkListDTO extends PageParam {

    @Schema(description = "呼叫Id")
    private String callId;

    @Schema(description = "被叫号码")
    private String calledNum;

    @Schema(description = "主叫号码")
    private String callerNum;

}

3. 访问 Swagger UI

启动项目后,访问以下 URL

http://localhost:8080/swagger-ui.html

### 回答1: 生成word形式的接口文档是在API开发过程中非常必要的一步。下面以Swagger生成word形式的接口文档为例,简述生成接口文档的具体步骤。 1. 安装Swagger:首先需要在本地安装Swagger,可以通过官网下载并安装,也可以使用npm安装。 2. 编写接口描述文件:使用Swagger的标准格式,编写API接口的描述文件,并添加相应的注释说明,便于后续生成文档。 3. 生成Swagger文档:使用Swagger的工具生成API文档,并保存为json格式,保存路径可以自定义。 4. 格式化json文件:为了方便查看和编辑,可以使用在线json格式化工具对json文件进行格式化,使其更加整洁易读。 5. 导入Word文档:使用在线文档生成工具(如Yapi或Swageer2Word),将JSON文件导入工具中,并按照需要设置文档的格式和样式。 6. 导出Word文档:最后,就可以将生成好的Word文档导出并保存。 总的来说,使用Swagger生成word形式的接口文档非常方便快捷,且可以自定义文档样式和格式,符合不同公司和个人需求。而且这种方式遵循标准的API文档开发流程,可以提高开发效率和文档质量。 ### 回答2: 生成 Word 形式接口文档的步骤如下: 1.收集接口信息和参数 首先,需要收集接口的相关信息和参数,包括接口名称、请求方式、请求 URL、请求参数、响应数据等。可以通过查看接口文档或者与开发人员沟通获得。 2.选择工具 生成 Word 形式接口文档的最简单方法是使用一些开源工具。这些工具可以将接口规格转换为 Word 文档格式。常用的工具有 Swagger2word、RAP、APIDoc 等。 3.安装并配置工具 安装和配置工具通常也很简单。大部分工具使用 Node.js 平台,需要先安装 Node.js。然后使用 npm 包管理工具安装相应工具。按照工具提供者的指南配置工具,保证工具能够正确地输出文档。 4.通过命令行生成文档 将准备好的接口信息用 Json 或者 YML 的格式保存到本地,然后通过命令行调用相应工具,即可自动生成接口文档。命令行参数一般包括输入和输出文件的路径等。 5.编辑和导出文档 生成的接口文档通常需要一些手工修订和编辑。可以在 Word 文档中添加目录、页眉页脚、样式等元素,使文档更具可读性。编辑完成后,可以直接导出成 Word 文件分享给团队其他成员。 总之,生成 Word 形式接口文档的流程结合了收集信息、选择工具、安装配置、命令行执行以及文档编辑和导出。只要按照以上步骤操作,就能够高效地生成规范的接口文档,帮助团队更好地理解和使用接口。 ### 回答3: 生成Word格式的接口文档是IT开发人员在编写和发布API接口的过程中必不可少的一环。下面以一个案例来说明如何生成Word格式的接口文档。 首先,我们需要使用一款支持API管理的软件,比如Swagger、Postman等。这些软件均支持在本地部署,并且可以方便地导出API文档。 其次,我们需要定义好接口的数据类型、参数、请求方式(GET、POST等)、接口权限等信息。这些信息需要尽可能详细地编写,以便开发人员或第三方软件开发者能够方便地查看和使用。 接下来,我们需要将接口的信息导出为Word文档。Swagger、Postman等软件都支持将API接口信息导出为Word文档格式,我们只需按照其导出流程操作即可。 最后,我们需要对导出的Word文档进行优化、美化以提升其可读性。具体的优化方式包括:增加标题、段落、列表等标记,设置合适的字体、字号、颜色、行距等,添加版本号、编写说明文档等等。 总之,生成Word形式的接口文档对于IT开发人员和第三方开发者来说都是非常重要的。通过详细规定和文档化API接口的功能、参数和使用方式,能够有效地提升开发人员的开发效率、降低开发成本,同时能够为第三方开发者提供清晰易懂的接口调用说明,推进API生态的繁荣。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值