2024年1月Java项目开发指南17:自动接口文档配置
Knife4j 文档 :https://doc.xiaominfo.com/
有能力的建议自己去看文档配置,本文仅做参考,因为官方文档会更新,本文不会,以后说不定本文就过时了。
ok,我们继续。虽然本文是2024年1月Java项目开发指南17,但实际上与前面的并没有什么关联(不是基于之前的项目的),这一点需要你知道。
导入依赖:
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>4.5.0</version>
</dependency>
配置(properties):
注意等号后面没有空格内容也没有使用任何引号引起来
# springdoc-openapi
springdoc.swagger-ui.path=/swagger-ui.html
springdoc.swagger-ui.tags-sorter=alpha
springdoc.swagger-ui.operations-sorter=alpha
springdoc.api-docs.path=/v3/api-docs
springdoc.group-configs[0].group=default
springdoc.group-configs[0].paths-to-match=/**
springdoc.group-configs[0].packages-to-scan=com.guaiguailang.harmony.controller
注意:packages-to-scan 的值 要改成符合自己的项目,不要照抄
如果你配置文件不是这种格式,另外一种格式(yml)如下:
# springdoc-openapi项目配置
springdoc:
swagger-ui:
path: /swagger-ui.html
tags-sorter: alpha
operations-sorter: alpha
api-docs:
path: /v3/api-docs
group-configs:
- group: 'default'
paths-to-match: '/**'
packages-to-scan: com.xiaominfo.knife4j.demo.web
# knife4j的增强配置,不需要增强可以不配
knife4j:
enable: true
setting:
language: zh_cn
注意:packages-to-scan 的值 要改成符合自己的项目结构信息
就这样就可以了,还可以搞点有意思的,就是运行的时候输出文档地址,效果就像这样:

那么怎么做呢,首先配置文件要有:
# Server Info Setting
server.port=8080
server.servlet.context-path=/
server.servlet.session.timeout=3600
然后在启动文件里面写:
package com.guaiguailang.harmony;
import com.github.yitter.contract.IIdGenerator;
import com.github.yitter.contract.IdGeneratorOptions;
import com.github.yitter.idgen.YitIdHelper;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
public class HarmonyLifeServerApplication {
public static void main(String[] args) {
// SpringApplication.run(HarmonyLifeServerApplication.class, args);
// 启动 Spring Boot 应用
ConfigurableApplicationContext context = SpringApplication.run(HarmonyLifeServerApplication.class, args);
// 获取服务器端口
int port = context.getEnvironment().getProperty("server.port", Integer.class);
// 获取服务器上下文路径,默认为"/"
String contextPath = context.getEnvironment().getProperty("server.servlet.context-path", "/");
if (contextPath.equals("/")) {
contextPath = "";
}
System.out.println("^_^ 青山埋忠骨,烟巷葬伟杰 ORZ···");
System.out.println("工 作 区 :"+work_space+" (请保证工作区全局唯一)");
// 输出项目访问地址
System.out.println("访 问 地 址 : http://localhost:" + port + contextPath);
// 输出 Swagger 文档地址
System.out.println("Swagger 文档地址: http://localhost:" + port + contextPath + "/swagger-ui.html");
System.out.println("Knife4j 文档地址: http://localhost:" + port + contextPath + "/doc.html");
System.out.println("^_^ 仙之巅 傲世间 先有萌狼后有天 ORZ···");
}
}
完毕
package com.guaiguailang.harmony.controller;
import com.guaiguailang.harmony.domain.dto.ParamLogin;
import com.guaiguailang.harmony.domain.vo.ResponseResult;
import com.guaiguailang.harmony.service.AuthService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@RestController
@Tag(name="系统认证接口")
@RequestMapping("/auth")
public class AuthController {
@Autowired
private final AuthService authService;
// (为什么加个final?)使用构造器注入 AuthService,这在 Spring Boot 中是推荐的做法。
/*
使用构造器注入(Constructor Injection)在 Spring Boot 中是一种推荐的做法,主要有以下几个原因和好处:
1. 强制依赖
构造器注入确保了依赖项在对象创建时就必须存在,这意味着任何依赖项都必须在构造对象时就提供。这种方式可以避免运行时的 NullPointerException(空指针异常),因为依赖项在对象创建时就已经被初始化。
2. 不可变性
构造器注入有助于创建不可变对象(Immutable Objects)。一旦对象通过构造器接收了其所需的依赖项,这些依赖项就不能被改变。这有助于提高代码的可预测性和安全性。
3. 清晰性
构造器注入使得依赖关系非常明确。当查看类的构造器时,可以立即看到该类依赖哪些组件,这提高了代码的可读性和可维护性。
4. 测试友好
构造器注入使得单元测试变得更容易。可以通过构造器直接传入模拟对象(Mock Objects),而不需要依赖框架提供的 setter 方法或其他注入方式。这使得测试代码更加简洁明了。
5. 减少副作用
构造器注入减少了类内部的副作用。与使用 setter 注入相比,构造器注入避免了在对象创建之后通过 setter 方法来修改其状态的情况,从而减少了潜在的副作用。
6. 生命周期管理
构造器注入有助于 Spring 容器更好地管理 bean 的生命周期。依赖项在构造器中声明后,Spring 容器可以在创建 bean 时就注入这些依赖项,从而确保 bean 在使用前就已经处于完全初始化的状态。
*/
// 哥们,你在这做面试题呢?不,我只是开发过程中记录一下,这些是我逝去的青春。
public AuthController(AuthService authService) {
this.authService = authService;
}
@Operation(
summary = "用户登录 账号登录",
description = "用户通过账号密码进行登录",
tags = {"系统认证接口"},
requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody(
content = @Content(mediaType = "application/json", schema = @Schema(implementation = ParamLogin.class))
),
responses = {
@ApiResponse(
responseCode = "200",
description = "成功返回登录结果",
content = @Content(
mediaType = "application/json",
schema = @Schema(
implementation = ResponseResult.class,
example = "{ \"msg\": \"登录成功\", \"data\": {\"token\":\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\", \"userId\":1}, \"code\":200 }"
)
)
),
@ApiResponse(responseCode = "400", description = "请求参数错误"),
@ApiResponse(responseCode = "401", description = "未授权"),
@ApiResponse(responseCode = "500", description = "内部服务器错误")
}
)
@PostMapping("/login")
public ResponseEntity loginByAccount(@RequestBody ParamLogin loginParam){
return ResponseEntity.ok(authService.loginByAccount(loginParam));
}
}


2024年1月Java项目开发指南17:自动接口文档配置的更多相关文章
- 基于.NetCore开发博客项目 StarBlog - (26) 集成Swagger接口文档
前言 这是StarBlog系列在2023年的第一篇更新~ 在之前的文章里,我们已经完成了部分接口的开发,接下来需要使用 curl.Postman 这类工具对这些接口进行测试,但接口一多,每次测试都要一 ...
- springboot项目利用Swagger2生成在线接口文档
Swagger简介. Swagger2是一款restful接口文档在线生成和在线调试工具.很多项目团队利用Swagger自动生成接口文档,保证接口文档和代码同步更新.在线调试.简单地说,你可以利用这个 ...
- 【WEB API项目实战干货系列】- 接口文档与在线测试(二)
上一篇: [WEB API项目实战干货系列]- Web API 2入门(一) 这一篇我们主要介绍如何做API帮助文档,给API的调用人员介绍各个 API的功能, 输入参数,输出参数, 以及在线测试 A ...
- Java项目怎么使用Swagger生成API文档?
一.环境1. JAVA82. MAVEN 3.0.53. IDEA 2016.2.54. spring boot 1.4.1 <dependency> <groupId>io. ...
- java 调用腾讯身份OCR接口文档实例(绝对可用)
1.情景展示 通过读取身份证照片上的信息,实现自动填充功能. 2.原因分析 想要解析照片上所携带的相关信息,就需要识别照片的功能,腾讯提供了免费的身份证OCR接口,可供大家使用. 没有耐心的可以直 ...
- Asp.net MVC WebApi项目的自动接口文档及测试功能打开方法
https://blog.csdn.net/foren_whb/article/details/78866133
- 作为Java开发工程师,如何高效优雅地编写接口文档
作为一名优秀的Java开发工程师,编写接口文档向来是一件很头疼的事情.本来就被bug纠缠的很累了,你还让我干这? 其实,你可以试试ApiPost. ApiPost的定位是Postman+Swagger ...
- 基于.NetCore3.1搭建项目系列 —— 使用Swagger做Api文档 (上篇)
前言 为什么在开发中,接口文档越来越成为前后端开发人员沟通的枢纽呢? 随着业务的发张,项目越来越多,而对于支撑整个项目架构体系而言,我们对系统业务的水平拆分,垂直分层,让业务系统更加清晰,从而产生一系 ...
- 转:Java项目开发规范参考
Java项目开发规范参考 - KevinLee的博客 - 博客频道 - CSDN.NEThttp://blog.csdn.net/u011383131/article/details/51227860 ...
- IDEA 学习笔记之 Java项目开发深入学习(2)
Java项目开发深入学习(2): 查找变量被用到的地方 编译当前文件 增加变量watch 注意:我使用了keymap (eclipse模板),所以很多快捷键和eclipse一样. F5单步调试进入函数 ...
随机推荐
- 原生CSS、HTML 和 JavaScript 实现酷炫表单
一直使用 Vue/React ,习惯了用组件,偶尔想用原生三剑客写点 Demo 发现样式丑的不忍直视.最近看 掘金小册<玩转CSS的艺术之美>看到 CSS 相关的内容,发现原生 CSS 也 ...
- C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
错误原因 VS平台认为scanf函数不安全,要求换成scanf_s函数 解决方案 方案一:将scanf换成scanf_s[不建议] 将scanf换成scanf_s 但是,scanf_s函数只能在vs上 ...
- std::stod:“123.456”-> 123.456
std::stod 是 C++ 标准库中一个用于将字符串转换为 double 类型的函数.它属于 <string> 头文件中的函数,通常用于将包含数字的字符串转换为相应的浮点数值. 函数原 ...
- 013 Python 变量的内存管理(学点底层东西显得你异于常人)
#!/usr/bin/env python # -*- coding:utf-8 -*- # Datatime:2022/7/18 21:13 # Filename:011 Python约定俗称的常量 ...
- KubeSphere 社区双周报 | OpenFunction 发布 v1.1.1 | 2023.6.9-6.22
KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...
- Effective C++:以const、enum和inline来替换define
替换define,也就是"以编译器替换预处理器".#define是C语言里的利器,但在C++里有很多取代它的理由. define是预处理的一部分,而不是编译器的一部分,它在编译前就 ...
- linux 排查项目问题常用命令
查看日志 头部开始查询文件file.log前100中包含'测试'的记录前后一行,并形成文件为new.loghead -n 100 file.log|grep -1 '测试' > new.log ...
- SLS:整层剪掉!基于降维特征聚类的PETL模型剪枝新方法 | ECCV'24
来源:晓飞的算法工程笔记 公众号,转载请注明出处 论文: Straightforward Layer-wise Pruning for More Efficient Visual Adaptation ...
- ABC372 (D,E)
ABC372 (D,E) D 一道比较简单的二分查找题目. 观察到每个数能成为 \(j\) 的条件是独立的,因此想到统计每个数能成为它前面哪些数的 \(j\). 对于每个\(ed\), 二分 \(1 ...
- jenkins集成cucumber-resport报告
需要安装的jenkins插件-Cucumber Reports jenkins版本:2.273 jenkins插件下载地址:点击下载 下载插件后通过jenkins插件管理上传已下载好的插件即可 等待j ...