JApiDocs|SpringBoot集成JApiDocs用以生成API文档

news2024/11/18 6:00:42

框架简介

效果图

JApiDocs和Swagger都是用于生成API文档的工具,它们各自有一些优点。下面是JApiDocs相较于Swagger的几个优点:

简单易用:JApiDocs相对来说更加简单易用,配置和使用都比较简单明了。它使用Java注解来描述API信息,而不需要额外的配置文件。

代码友好:JApiDocs直接与源代码进行交互,不需要通过额外的配置文件或注解来描述API文档信息。它通过扫描代码中的注释来生成API文档,提供了更加直观和代码友好的方式。

灵活性:JApiDocs提供了丰富的自定义选项,可以根据需要灵活地配置生成的文档内容和样式。可以通过自定义注解、自定义解析器等来满足不同的需求。

减少冗余代码:JApiDocs在生成API文档时,可以通过继承和重写的方式,减少冗余代码的编写。可以将公共的API信息提取到父类或接口中,子类或实现类中只需覆盖需要变更的部分,避免了重复的代码编写。

无侵入性:JApiDocs对代码的侵入性较低,只需要在需要生成文档的地方添加相应的注释或注解即可。不需要修改代码的原有逻辑。

需要注意的是,JApiDocs并不是像Swagger那样成熟和广泛使用的API文档工具,所以在选择时需要考虑自身的需求和项目的实际情况。

详细步骤

pom文件中添加Swagger依赖

<dependency>
  <groupId>io.github.yedaxia</groupId>
  <artifactId>japidocs</artifactId>
  <version>1.4.4</version>
</dependency>

在Spring Boot启动文件中书写配置(或任意一个main方法下运行):

需要修改API文档生成的目录,自己自定义路径!

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import io.github.yedaxia.apidocs.Docs;
import io.github.yedaxia.apidocs.DocsConfig;

@SpringBootApplication
@MapperScan("com.neusoft.elementplusboot.mapper")
public class ElementplusbootApplication {
    public static void main(String[] args) {
        SpringApplication.run(ElementplusbootApplication.class, args);
        
        DocsConfig config = new DocsConfig();
        config.setProjectPath("D:\\Programming\\Code\\eclipseCode\\elementplusboot"); //项目根目录
        config.setProjectName("ElementPlusBoot"); //项目名称
        config.setApiVersion("V1.0");       //声明该API的版本
        config.setDocsPath("D:\\Programming\\Code\\eclipseCode\\elementplusboot\\JApiDocs"); //生成API文档所在目录
        config.setAutoGenerate(Boolean.TRUE);  //不使用就只导出声明了@ApiDoc的接口
        Docs.buildHtmlDocs(config); //执行生成文档
    }
}

在实体类上添加注释

两种注解方式都可以使用!

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;

/**
 * 用户实体
 * @author PaperFish
 *
 */
public class Users {

	@TableId(value="uid",type=IdType.AUTO)
	private Integer uid; //用户编号
	private String uname; //用户姓名
	private Integer uage; //用户年龄
	private Integer usex; //用户性别
	
	@Override
	public String toString() {
		return "Users [uid=" + uid + ", uname=" + uname + ", uage=" + uage + ", usex=" + usex + "]";
	}
	public Integer getUid() {
		return uid;
	}
	public void setUid(Integer uid) {
		this.uid = uid;
	}
	public String getUname() {
		return uname;
	}
	public void setUname(String uname) {
		this.uname = uname;
	}
	public Integer getUage() {
		return uage;
	}
	public void setUage(Integer uage) {
		this.uage = uage;
	}
	public Integer getUsex() {
		return usex;
	}
	public void setUsex(Integer usex) {
		this.usex = usex;
	}

}

在控制层需要生成API的类及方法上添加注释

更多高级配置请去官网查看注解的使用:https://japidocs.agilestudio.cn/#/zh-cn/

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.neusoft.elementplusboot.po.Users;
import com.neusoft.elementplusboot.service.UsersService;

import io.github.yedaxia.apidocs.ApiDoc;


/**
 * 用户管理接口
 * @author PaperFish
 *
 */
@RestController
@RequestMapping("/usersController")
public class UsersController {

	@Autowired
	UsersService usersService;

	/**
	 * 分页获取所有用户信息
	 * 
	 * @description 根据页码及页中数量获取用户信息
	 * @param page 页码
	 * @param pageSize 页中数量
	 * @param uname 用户姓名
	 * 
	 */
	@ApiDoc(stringResult = "{total:'', list:'{}'}")
	@GetMapping("/getAllUsers")
	public Map<String, Object> getAllUsers(int page, int pageSize, String uname) {
		// int startpPage = (page - 1) * pageSize;
		Page<Object> startPage = PageHelper.startPage(page, pageSize);
		List<Users> usersList = usersService.getAllUsers(uname);

		Map<String, Object> map = new HashMap<String, Object>();
		map.put("list", usersList); // 记录返回内容
		map.put("total", startPage.getTotal()); // 记录数据条数

		return map;
	}

	/**
	 * 新增用户
	 * 
	 * @description 新增用户信息
	 * @param users 用户对象
	 * 
	 */
	@PostMapping("/saveUsers")
	public int saveUsers(@RequestBody Users users) {
		return usersService.saveUsers(users);
	}

	/**
	 * 更新用户
	 * 
	 * @description 更新用户信息
	 * @param users 用户对象
	 * 
	 */
	@PutMapping("/updateUsers")
	public int updateUsers(Users users) {
		return usersService.updateUsers(users);
	}

	/**
	 * 删除用户
	 * 
	 * @description 删除用户信息
	 * @param uid 用户编号
	 * 
	 */
	@DeleteMapping("/deleteUsers")
	public int deleteUsers(Integer uid) {
		return usersService.deleteUsers(uid);
	}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/707012.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手机兼职浪潮:揭秘在家赚钱的新机遇

科思创业汇 大家好&#xff0c;这里是科思创业汇&#xff0c;一个轻资产创业孵化平台。赚钱的方式有很多种&#xff0c;我希望在科思创业汇能够给你带来最快乐的那一种&#xff01; 如今&#xff0c;随着智能手机的普及和互联网的发展&#xff0c;手机兼职已经成为一种新的浪…

新加坡 PBM 是可编程数字货币的重要创新

一周以前我们在卢旺达开会的时候&#xff0c;新加坡 MAS 在现场发布了 Purpose Bound Money &#xff08;PBM&#xff09; 的技术白皮书。行业媒体发了几条新闻&#xff0c;然后就放过去了。实际上 PBM 代表着货币当局对于数字货币编程问题迄今为止最深度的思考&#xff0c;其白…

MySQL:聚合函数(全面详解)

聚合函数 前言一、聚合函数介绍1、AVG和SUM函数2、 MIN和MAX函数3、COUNT函数 二、GROUP BY1、基本使用2、使用多个列分组3、 GROUP BY中使用WITH ROLLUP 三、HAVING1、基本使用2、WHERE和HAVING的对比 四、 SELECT的执行过程1、查询的结构2、SELECT执行顺序3、SQL 的执行原理 …

论好名字的重要性: Linux内核page到folio的变迁

一、引子 Once upon a time&#xff0c;Netscape的大拿 Phil Karlton曾经说过&#xff1a;“There are only two hard things in Computer Science: cache invalidation and naming things”&#xff0c;成为程序界流传甚广的名言&#xff0c;可见取名是计算机科学中最难的两件…

使用SSH远程直连Docker容器

文章目录 1. 下载docker镜像2. 安装ssh服务3. 本地局域网测试4. 安装cpolar5. 配置公网访问地址6. SSH公网远程连接测试7.固定连接公网地址8. SSH固定地址连接测试 转载自cpolar极点云文章&#xff1a;SSH远程直连Docker容器 在某些特殊需求下,我们想ssh直接远程连接docker 容器…

网约车进入饱和期,如祺出行继续蓄力还能泛起多大涟漪?

如祺出行的商业版图又有了新扩张。 6月28日&#xff0c;如祺出行正式开通厦门运营&#xff0c;这是继2022年6月进入长沙后&#xff0c;如祺出行在粤港澳大湾区之外聚焦运营的第二座城市。 而在此前&#xff0c;如祺出行宣布完成8.42亿元B轮融资。据了解&#xff0c;本轮融资为…

react-native-SerialPort 串口插件使用及配置

一、git地址和环境版本 &#xff08;1&#xff09;Git地址&#xff1a;https://github.com/Marcello168/react-native-SerialPort &#xff08;2&#xff09;node版本&#xff1a;14 &#xff08;3&#xff09;react-native版本&#xff1a;0.72 二、环境配置 &#xff08;…

CentOS 安装及基本配置

文章目录 1、root 免密码输入自动登录2、设置 Terminal 计算机终端背景颜色3、关闭关闭锁屏4、You need to be root to perform this command. 1、root 免密码输入自动登录 注&#xff1a;设置免密登录需要使用超级用户权限&#xff0c;即 root 权限 &#xff08;1&#xff0…

数字IC后端学习笔记:等效性检查和ECO

1.形式验证工具 对于某些电路的移植&#xff0c;一般不需要对新电路进行仿真验证&#xff0c;而可以直接通过EDA工具来分析该电路的功能是否与原电路一致&#xff0c;此种验证方法可以大量减少验证时间&#xff0c;提高电路的效率。 等效性检查&#xff08;Equivalence Check&a…

Nuxt重构的填坑之路

我的个人网站是用vuecli写的&#xff0c;SEO不忍直视。于是用Nuxt重构了代码&#xff0c;过程中踩了无数坑&#xff0c;记录如下 一&#xff1a;body样式不生效 正常的body样式设置不能生效&#xff0c;需要在nuxt.config.js中配置 1、设置bodyAttrs的class属性&#xff0c;…

毕业论文设计题目大全(源码+论文)_kaic

1 四足步行机器人设计-机械部分 2 吸扫一体机器人外壳注塑模具设计 3 吸扫一体机器人控制系统设计设计 4 吸扫一体机器人机械结构设计 5 汽车雨刷器机械结构及控制系统软硬件电路设计 6 家庭智能防盗报警系统的设计 7 小区电气智能控制系统的设计 8 果蔬智能售卖…

第66篇:顶级APT后门Sunburst通信流量全过程复盘分析

Part1 前言 大家好&#xff0c;我是ABC_123。前面几周分享了Solarwinds供应链攻击事件的详细攻击流程及Sunburst后门的设计思路&#xff0c;但是多数朋友还是对Sunburst后门的通信过程还是没看明白。本期ABC_123就从流量的角度&#xff0c;把Sunburst后门的通信过程完整地复盘…

压缩点云数据

压缩分辨率参数 LOW_RES_ONLINE_COMPRESSION&#xff1a;低分辨率的在线压缩模式&#xff0c;不保留颜色信息。 MED_RES_ONLINE_COMPRESSION&#xff1a;中等分辨率的在线压缩模式&#xff0c;不保留颜色信息。 HIGH_RES_ONLINE_COMPRESSION&#xff1a;高分辨率的在线压缩模…

Nacos架构与原理 - Nacos-Sync

文章目录 概述官网系统模块架构同步任务管理页面注册中心管理页面使用场景 概述 NacosSync 是⼀个支持多种注册中心的同步组件,基于 Spring boot 开发框架,数据层采用Spring Data JPA &#xff0c;遵循了标准的 JPA 访问规范&#xff0c;支持多种数据源存储,默认使用Hibernate…

c++11 标准模板(STL)(std::basic_ostream)(二)

定义于头文件 <ostream> template< class CharT, class Traits std::char_traits<CharT> > class basic_ostream : virtual public std::basic_ios<CharT, Traits> 类模板 basic_ostream 提供字符流上的高层输出操作。受支持操作包含有格式…

float:right 浮动布局后怎么清除浮动对后面元素的影响

1 用overflow:hidden和overflow:auto 在父元素上 2 用伪元素进行清除浮动 ::after

Ubuntu20.04LTS下安装Intel Realsense D435i驱动与ROS运行D435i节点

Ubuntu20.04LTS下安装Intel Realsense D435i驱动与ROS运行D435i节点 1&#xff1a;RealSense的SDK安装 1.1&#xff1a;更新初始化 sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade1.2&#xff1a;注册服务器的公钥 sudo apt-k…

安卓水果店的设计与实现

1.项目概述 随着科学技术和社会经济的不断提高&#xff0c;人们对服务的快捷、便利性要求也越来越高&#xff0c;从而对智能手机上的应用软件提出了更高的要求。一个基于安卓技术的水果系统能够为用户提供一个方便日常操作的便捷点餐功能,它能够满足广大手机用户的对日常水果的…

【Java可执行命令】(七)C头文件创建工具 javah:以Java本机接口(JNI)规范创建C头文件,深入解析创建工具javah ~

Java可执行命令详解之javah 1️⃣ 概念2️⃣ 优势和缺点3️⃣ 使用3.1 语法格式3.1.1 可选参数&#xff1a;-o < file>3.1.2 可选参数&#xff1a;-classpath < path>3.1.3 可选参数&#xff1a;-jni 4️⃣ 应用场景5️⃣ 实现原理6️⃣ 注意事项&#x1f33e; 总结…

win系统安装配置minio笔记

win系统安装配置minio笔记 下载win64版本的minio.exe 可以去minio官网下载&#xff0c;也可以直接在csdn下载&#xff0c;这里提供一个下载地址 https://download.csdn.net/download/ThinkPet/87976200?spm1001.2014.3001.5501配置并启动minio.exe 可以在cmd命令里执行 m…