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:自动接口文档配置的更多相关文章

  1. 基于.NetCore开发博客项目 StarBlog - (26) 集成Swagger接口文档

    前言 这是StarBlog系列在2023年的第一篇更新~ 在之前的文章里,我们已经完成了部分接口的开发,接下来需要使用 curl.Postman 这类工具对这些接口进行测试,但接口一多,每次测试都要一 ...

  2. springboot项目利用Swagger2生成在线接口文档

    Swagger简介. Swagger2是一款restful接口文档在线生成和在线调试工具.很多项目团队利用Swagger自动生成接口文档,保证接口文档和代码同步更新.在线调试.简单地说,你可以利用这个 ...

  3. 【WEB API项目实战干货系列】- 接口文档与在线测试(二)

    上一篇: [WEB API项目实战干货系列]- Web API 2入门(一) 这一篇我们主要介绍如何做API帮助文档,给API的调用人员介绍各个 API的功能, 输入参数,输出参数, 以及在线测试 A ...

  4. Java项目怎么使用Swagger生成API文档?

    一.环境1. JAVA82. MAVEN 3.0.53. IDEA 2016.2.54. spring boot 1.4.1 <dependency> <groupId>io. ...

  5. java 调用腾讯身份OCR接口文档实例(绝对可用)

      1.情景展示 通过读取身份证照片上的信息,实现自动填充功能. 2.原因分析 想要解析照片上所携带的相关信息,就需要识别照片的功能,腾讯提供了免费的身份证OCR接口,可供大家使用. 没有耐心的可以直 ...

  6. Asp.net MVC WebApi项目的自动接口文档及测试功能打开方法

    https://blog.csdn.net/foren_whb/article/details/78866133

  7. 作为Java开发工程师,如何高效优雅地编写接口文档

    作为一名优秀的Java开发工程师,编写接口文档向来是一件很头疼的事情.本来就被bug纠缠的很累了,你还让我干这? 其实,你可以试试ApiPost. ApiPost的定位是Postman+Swagger ...

  8. 基于.NetCore3.1搭建项目系列 —— 使用Swagger做Api文档 (上篇)

    前言 为什么在开发中,接口文档越来越成为前后端开发人员沟通的枢纽呢? 随着业务的发张,项目越来越多,而对于支撑整个项目架构体系而言,我们对系统业务的水平拆分,垂直分层,让业务系统更加清晰,从而产生一系 ...

  9. 转:Java项目开发规范参考

    Java项目开发规范参考 - KevinLee的博客 - 博客频道 - CSDN.NEThttp://blog.csdn.net/u011383131/article/details/51227860 ...

  10. IDEA 学习笔记之 Java项目开发深入学习(2)

    Java项目开发深入学习(2): 查找变量被用到的地方 编译当前文件 增加变量watch 注意:我使用了keymap (eclipse模板),所以很多快捷键和eclipse一样. F5单步调试进入函数 ...

随机推荐

  1. Module Warning (from ./node_modules/postcss-loader/dist/cjs.js): Warning

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  2. 立即报名 | 云原生 + AI Meetup 成都站 11.4 正式开启

    2023 年,KubeSphere 社区已经在深圳.杭州.上海三个城市各组织了一场线下 Meetup.第四站,我们将走进天府成都. 11 月 4 日,云原生 + AI Meetup 成都站将正式开启! ...

  3. Web渗透08_文件上传

    1 文件上传漏洞概述 文件上传几乎是每一个web,或者说是任何 服务器客户端模式 应用的必备功能,用户在自己的文章,博文中要上相关图片.用户上传自己的头像.网盘用户上传各种文件.等等.若服务器对此没有 ...

  4. 基于surging的木舟平台如何上传模块热部署

    一.概述 通过3个月的赶工,基本上快完成1.0版本的研发,将在下个月发布社区1.0版本. 木舟 (Kayak) 是什么? 木舟(Kayak)是基于.NET6.0软件环境下的surging微服务引擎进行 ...

  5. Ubuntu 22.04 LTS 在线/离线安装 Docker

    Docker 安装方式 时间:2024-10 准备环境 root@ubuntu2204:~# hostnamectl Static hostname: ubuntu2204 Icon name: co ...

  6. 3.20 什么是环境变量,Linux环境变量有哪些?

    变量是计算机系统用于保存可变值的数据类型,我们可以直接通过变量名称来提取到对应的变量值.在 Linux 系统中,环境变量是用来定义系统运行环境的一些参数,比如每个用户不同的家目录(HOME).邮件存放 ...

  7. dateFormater:格式化时间

    function dateFormater(formater, t){ let date = t ? new Date(t) : new Date(), Y = date.getFullYear() ...

  8. 使用 JuiceFS 快照功能实现数据库发布与端到端测试

    今天的博客来自 JuiceFS 云服务用户 Jerry,他们通过使用 JuiceFS snapshot 功能,创新性地实现了数据的版本控制.Jerry,是一家位于北美的科技公司,利用人工智能和机器学习 ...

  9. i-MES生产制造管理系统-可视化看板

    可视化看板最主要的目的是为了将生产状况透明化,让大家能够快速了解当前的生产状况以及进度,通过大数据汇总分析,为管理层做决策提供数据支撑,看板数据必须达到以下基本要求: 数据准确--真实反映生产情况 数 ...

  10. 命运的X

    命运的X cjx 生成函数强. 思路 首先,设 \(f_i\) 为添加第 \(i\) 项后满足条件的概率,\(g_i\) 任意添加至第 \(i\) 项的概率. 我们要求的答案: \[ans=\sum_ ...