当前位置: 首页 > news >正文

Java项目生成接口文档的方案

文章目录

  • 问题:Java项目生成接口文档的方案
    • 方案一:`Swagger3.0`
    • 方案二:`Apipost`
    • 两者对比

问题:Java项目生成接口文档的方案

需求

1、需要生成生成时间,作者名称,项目名称,接口名称,请求参数,请求地址,请求类型,请求用例,请求方式,相应参数,响应用例。

2、需要生成markdown文档。

方案一:Swagger3.0

Swagger 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。它提供了一套工具来帮助开发者设计、构建、文档化以及使用 RESTful API

关键注解

@Api(tags = "后台管理")说明:该控制器名称为后台管理
@ApiOperation说明:置于接口名称上面,标识接口涵义

依赖:Java项目中添加依赖坐标

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

添加配置:Java项目中添加配置类

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

@Configuration
public class SwaggerConfig {
    @Bean(value = "defaultApi2")
    public Docket customDocket() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller"))
                .build();
    }

    /**
     * 构建 api文档的详细信息函数
     *
     * @return
     */
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("springboot-swagger2-demo")
                .version("1.0.0")
                .description("SpringBoot 集成 Swagger2 构建RESTful API")
                .contact(new Contact("geekmice", "http://geekmice.cn", "2437690868@qq.com"))
                .build();
    }
}

添加注解:在控制器类和方法上添加 Swagger 注解

package com.example.demo.controller;

import com.example.demo.entity.Goods;
import com.example.demo.entity.GoodsVO;
import com.example.demo.entity.GoodsDTO;
import com.example.demo.service.GoodsService;
import com.example.demo.utils.R;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.RequiredArgsConstructor;

import java.util.Objects;

/**
 * @Author pmb
 * @Desc (Goods)表控制层
 * @Date 2025-03-27 11:27:46
 */
@RestController
@RequestMapping("goods")
@RequiredArgsConstructor
@Api(tags = "后台管理")
public class GoodsController {

    private final GoodsService goodsService;

    @ApiOperation("分页查询")
    @PostMapping("/queryByPage")
    public R<IPage<GoodsVO>> queryByPage(@RequestBody GoodsDTO param) {
        return goodsService.queryByPage(param);
    }

    @ApiOperation("根据ID查询")
    @PostMapping("/queryById")
    public R<GoodsVO> queryById(@RequestBody GoodsDTO param) {
        return goodsService.queryById(param.getId());
    }

    @ApiOperation("新增")
    @PostMapping("/insert")
    public R insert(@RequestBody Goods param) {
        return goodsService.insert(param);
    }

    @ApiOperation("根据id修改")
    @PostMapping("/update")
    public R update(@RequestBody Goods param) {
        if (Objects.isNull(param.getId())) {
            return R.failed("ID不能为空");
        }
        return goodsService.update(param);
    }

    @ApiOperation("根据id删除")
    @PostMapping("/deleteById")
    public R deleteById(@RequestBody GoodsDTO param) {
        return goodsService.deleteById(param.getId());
    }

}

启动项目

image-20250327160500204

访问文档

启动项目后,访问 http://localhost:8080/doc.html 即可查看生成的接口文档。

image-20250327160555287

如何导出接口文档markdown

访问地址http://localhost:8080/doc.html#/home之后

点击左侧文档管理-》离线文档

image-20250327160716300

导出四种类型的文档,pdf还未实现。

下载之后,如下图,四种方式

image-20250327160843008

方案二:Apipost

Apipost 是一款功能强大的 API 调试与管理工具,集 API 设计、调试、文档生成等多种功能于一体,能够帮助开发者更高效地进行 API 相关的开发与测试工作。

接口编写完成之后,打开Apipost,对已完成的接口添加测试

image-20250327161222528

现在对demo目录中的接口进行导出

点击demo项目右侧三个点,分享,复制地址

image-20250327161327207

image-20250327161347805

到达接口文档待导出界面

image-20250327161434505

点击右侧,导出文档按钮,选择导出markdown

image-20250327161537027

生成具体md文档

image-20250327161613459

两者对比

生成时间作者名称项目名称接口名称请求参数请求示例请求方式响应参数响应示例生成md
方案一0111101101
方案二1111011011

相关文章:

  • Linux环境上传本地文件安装mysql
  • MySQL(数据表创建)
  • 【持续集成和持续部署】
  • H5DS编辑器教程——H5页面触发动画实战指南
  • 视频网站服务器网络连接不稳定该如何解决?
  • Python大数据处理 基本的编程方法
  • 《Oracle服务进程精准管控指南:23c/11g双版本内存优化实战》 ——附自动化脚本开发全攻略
  • Linux C语言获取elf文件符号信息
  • NVIDIA cuOpt:GPU加速优化AI微服务详解
  • 红宝书第十八讲:详解JavaScript的async/await与错误处理
  • 浅谈数据结构
  • 蓝桥杯 数三角
  • 阿里OSS使用指南!
  • 论文阅读笔记——ST-4DGS,WideRange4D
  • 【day24】逻辑分析与流程梳理:电子门票核销成功率巡检
  • 【数据分享】2000—2024年我国乡镇的逐年归一化植被指数(NDVI)数据(年最大值/Shp/Excel格式)
  • FFmpeg —— 实时绘制音频波形图(附源码)
  • 服务器与客户端通讯测试
  • 2025年- G32-Lc106-133. 克隆图--java版(很抽象,没有很能理解)
  • Linux SSH远程登录
  • 中国人民银行:5月8日起降息,15日起降准
  • 上海黄浦区拟73.2654亿元协议出让余庆里7宗组合地块
  • “模”范生上海,如何再进阶?
  • 特朗普:对所有在国外制作进入美国的电影征收100%关税
  • 体坛联播|拜仁提前2轮德甲夺冠,赵心童11比6暂时领先
  • 贵州省黔西市发生载人游船侧翻事故