knife4j实现微服务swagger文档聚合

news2024/9/20 22:14:07

使用knife4j实现分布式swagger文档聚合

在项目开发过程中,接口文档的使用是在所难免的,但是在微服务场景下,多个服务之间的swagger是分散的,虽然swagger提供了微服务的聚合方式,配置过于繁琐,加之swagger本身的功能比较少,而且ui布局也比较蛋痛,此处推荐一款新框架用于增强swagger以及实现微服务接口文档的聚合

knife4j官方文档:https://doc.xiaominfo.com/docs/

此处使用文档中提供的Spring Cloud Gateway网关聚合 | Knife4j (xiaominfo.com)方式

依赖引入

在整个项目的父pom中

    <properties>
        <springdoc.version>2.0.2</springdoc.version>
        <knife4j.version>4.0.0</knife4j.version>
    </properties>
<dependencyManagement>
<!--            swagger-->
    <dependency>
        <groupId>org.springdoc</groupId>
        <artifactId>springdoc-openapi-starter-webmvc-api</artifactId>
        <version>${springdoc.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springdoc</groupId>
        <artifactId>springdoc-openapi-starter-webflux-api</artifactId>
        <version>${springdoc.version}</version>
    </dependency>
    <!--knife4j 分布式接口文档聚合-->
    <dependency>
        <groupId>com.github.xiaoymin</groupId>
        <artifactId>knife4j-gateway-spring-boot-starter</artifactId>
        <version>${knife4j.version}</version>
    </dependency>
</dependencyManagement>

gateway,因为gateway是基于webflux构建的因此需要导入的是webflux版本的swagger依赖

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-gateway-spring-boot-starter</artifactId>
</dependency>
<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webflux-api</artifactId>
    <scope>provided</scope>
</dependency>

服务server

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-api</artifactId>
</dependency>

配置文件编写

服务server:

springdoc:
  swagger-ui:
    path: /swagger
    tags-sorter: alpha
    operations-sorter: alpha
  api-docs:
    path: /服务名称/api-docs

gateway:

gateway:
  discovery:
    locator:
      enabled: true
      #此处是配置服务的路由
  routes:
    #        XXX模块
    - id: XXX-server
      uri: lb://XXX-server
      predicates:
        - Path=/XXX/**
        
knife4j:
  # 聚合swagger文档
  gateway:
    enable: true
    routes:
    #此处需要与上面的配置对应
      - name: XXX服务
        url: /XXX/api-docs?group=default
        service-name: XXX-server
        order: 1        

到此为止,knife4j文档聚合就完成了

直接运行

启动项目之后直接访问gateway地址/doc.html即可

image-20230708152134096

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

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

相关文章

RestTemplate中exchange发起请求

RestTemplate中exchange简单使用 简介什么是RestTemplate 常用方法实战 简介 在项目中&#xff0c;我们可能需要发起HTTP请求&#xff0c;请求目标URL来获取响应数据做一些处理。就需要用到HTTP请求工具&#xff0c;常用的Java类工具有&#xff1a;HttpUrlConnection、Apache …

[TIFS 2023] 用增强压缩感知做安全模型对比联邦学习

Secure Model-Contrastive Federated Learning With Improved Compressive Sensing | IEEE Journals & Magazine | IEEE Xplore摘要&#xff1a; 联邦学习&#xff08;FL&#xff09;已广泛应用于金融风险控制、电子政务、智慧医疗等各个领域。为了保护数据隐私&#xff0…

Leetcode每日一题:167. 两数之和 II - 输入有序数组(2023.7.8 C++)

目录 167. 两数之和 II - 输入有序数组 题目描述&#xff1a; 实现代码与解析&#xff1a; 暴力&#xff08;超时&#xff09; 双指针 原理思路&#xff1a; 二分 原理思路&#xff1a; 167. 两数之和 II - 输入有序数组 题目描述&#xff1a; 给你一个下标从 1 开始的…

MySQL性能瓶颈定位慢查询

目录 1 性能优化的思路2 引言3 MySQL慢查询日志3.1 慢查询参数3.2 开启慢查询日志&#xff08;临时&#xff09;3.3 开启慢查询日志&#xff08;永久&#xff09;3.4 慢查询测试 4 MySQL性能分析 EXPLAIN4.1 概述4.2 EXPLAIN字段介绍4.2.1 id字段4.2.2 select_type 与 table字段…

Leetcode-每日一题【21.合并两个有序链表】

题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4]输出&#xff1a;[1,1,2,3,4,4] 示例 2&#xff1a; 输入&#xff1a;l1 [], l2 []输出&#xff1a;…

1.Git使用技巧-常用命令1

Git使用技巧-常用命令 文章目录 Git使用技巧-常用命令一、git 创建仓库demo 二、本地仓库常用命令提交详解git commitgit commit --amend 三、 推送到远程分支git push 总结参考 一、git 创建仓库 创建远端仓库&#xff1a; git init – bare // 创建远端裸仓库&#xff1b; 远…

【华为机试】HJ16 购物单详解+完整源代码示例

从毕业到入职&#xff0c;忙于各种事情&#xff0c;所以博客一直也没有空更新。从入职到现在差不多整三个月了&#xff0c;刚刚在比亚迪这边转正。目前干的工作涉及到开发的工作不是很多&#xff0c;但是又怕之前的技能荒废了。所以最近有个想法&#xff0c;再把C算法和数据结构…

Android Zygote 启动流程

和你一起终身学习&#xff0c;这里是程序员Android 经典好文推荐&#xff0c;通过阅读本文&#xff0c;您将收获以下知识点: Android系统包含netd、servicemanager、surfaceflinger、zygote、media、installd、bootanimation 等基本服务&#xff0c;具体作用请看下图。 Android…

English Learning - L3 作业打卡 Lesson8 Day60 2023.7.5 周三

English Learning - L3 作业打卡 Lesson8 Day60 2023.7.5 周三 引言Part 1 总结&#x1f349;句1: 11 years ago, when I lost my legs, I had no idea what to expect.成分划分连读爆破语调 &#x1f349;句2: But if you ask me today, if I would ever want to change my si…

java+Mysql 图书管理系统(idea)

目录 前言 部分界面截图 登录界面 注册界面 图书管理界面 关于我们界面 部分代码 登录界面 数据库工具类 前言 jdk 版本&#xff1a;openjdk version "11.0.12" MySql版本&#xff1a;5.7.40 加&#xff08;vx&#xff1a;lixuanzi0521&#xff09;帮调试 …

递推--Fibonacci数列 II

描述 众所周知&#xff0c;Fibonacci数列是一个著名数列。它的定义是&#xff1a; 本题要求采用第二种方法&#xff1a;递推。 输入描述 每行一个整数 i &#xff0c;表示 Fibonacci 数列的第i项。 i ≤ 100000 对比前一题&#xff0c;本题的数据规模是 十万 &#xff01; …

css基础知识十九:让Chrome支持小于12px 的文字方式有哪些?区别?

一、背景 Chrome 中文版浏览器会默认设定页面的最小字号是12px&#xff0c;英文版没有限制 原由 Chrome 团队认为汉字小于12px就会增加识别难度 中文版浏览器 与网页语言无关&#xff0c;取决于用户在Chrome的设置里&#xff08;chrome://settings/languages&#xff09;把…

应用层:电子邮件

1.应用层&#xff1a;电子邮件 笔记来源&#xff1a; 湖科大教书匠&#xff1a;应用层概述 湖科大教书匠&#xff1a;电子邮件 声明&#xff1a;该学习笔记来自湖科大教书匠&#xff0c;笔记仅做学习参考 电子邮件系统采用客户/服务器方式&#xff08;C/S&#xff09; 电子邮件…

计算机视觉 3D点云极简概述

一、概述 点云是表示 3D 坐标系中的数字 3D 物理对象或空间的点数据库。它由数百万或者更多个单独的测量点组成,具有 x、y 和 z 坐标。3D点云是物体的高精度数字记录。点云用于生成用于 3D 建模的 3D 网格和其他模型。包括医学成像、3D 打印、制造、建筑、3D 游戏和虚拟现实 (…

NSS [NISACTF 2022]babyupload

NSS [NISACTF 2022]babyupload 源码给了提示&#xff0c;/source路径 访问后得到一个文件&#xff0c;是源码 from flask import Flask, request, redirect, g, send_from_directory import sqlite3 import os import uuidapp Flask(__name__)SCHEMA """CRE…

基于matlab使用PointNet深度学习进行点云分类(附源码)

一、前言 此示例演示如何训练 PointNet 网络以进行点云分类。 点云数据由各种传感器获取&#xff0c;例如激光雷达、雷达和深度摄像头。这些传感器捕获场景中物体的3D位置信息&#xff0c;这对于自动驾驶和增强现实中的许多应用非常有用。例如&#xff0c;区分车辆和行人对于…

【优选算法题练习】day1

文章目录 一、283. 移动零1.题目简介2.解题思路3.代码4.运行结果 二、1089. 复写零1.题目简介2.解题思路3.代码4.运行结果 三、202. 快乐数1.题目简介2.解题思路3.代码4.运行结果 总结 双指针&#xff1a; 一、283. 移动零 1.题目简介 283. 移动零 给定一个数组 nums&#x…

vscode: Unable to determine workspace folder

故障现象&#xff1a; 用vscode的bashdb调试bash 脚本时&#xff0c;出现如下打印&#xff1a; 故障原因&#xff1a; setttings.json中&#xff0c;“cwd”定义目录错误&#xff0c;或者缺少“cwd”定义&#xff1b; 解决办法&#xff1a; 打开settings.json文件&#xff…

SpringBoot+Vue 的在线考试系统

&#x1f495;&#x1f495;作者&#xff1a;程序员徐师兄 个人简介&#xff1a;7 年大厂程序员经历&#xff0c;擅长Java、微信小程序、Python、Android等&#xff0c;大家有这一块的问题可以一起交流&#xff01; 各类成品java毕设 。javaweb&#xff0c;ssh&#xff0c;ssm&…

Python环境搭建秘籍:开发者的黄金组合!

1、vscode下载并安装。 Visual Studio Code - Code Editing. Redefined 2、安装插件。 在vscode中按ctrlshiftx快捷键打开extension的界面。 输入python关键字&#xff0c;注意选择Micorosoft的。 3、创建python代码。 C:\pythoncode\weather.py import wx import request…