微服务集成Swagger2【SpringCloud,SpringBoot】

news/2024/7/24 6:14:46

文章优先发表在个人博客上面,后续更新可能忘记同步到CSDN,给你带来不便抱歉。
个人博客本篇文章地址:https://www.xdx97.com/article/688418128744415232

因为微服务是由多个服务构成如果每个服务的接口去开启新的页面这将十分难受。
下面教大家怎么把多个服务的API接口集成到一个页面中去。

文章目录

    • 1、效果演示
    • 2、代码部分
        • 2-1:导入依赖包
        • 2-2:配置yml文件
        • 2-3:配置服务的Swagger2Config
        • 2-3:配置zuul的SwaggerConfig
    • 3、具体应用
        • 3-1:首先在controller配置注解@Api
        • 3-2、get请求参数配置
        • 3-3、post请求参数配置
            • 3-3-1:先配置实体
            • 3-3-2:配置接口
    • 4、其它
        • 4-1:全部注解可以看这里
        • 4-2:常见错误
        • 4-3:代码是开源的,地址如下:

1、效果演示

在这里插入图片描述


2、代码部分

2-1:导入依赖包

<!-- swagger API文档插件 -->
<dependency>
     <groupId>com.spring4all</groupId>
     <artifactId>swagger-spring-boot-starter</artifactId>
     <version>1.7.0.RELEASE</version>
</dependency>

需要在zuul 、和你的服务里面都加入依赖。我这里有两个服务用户工具所以我们需要添加三次。(你按照具体服务添加即可)

注:这个依赖可能会和SpringBoot版本冲突,1.7.0和boot2.0可以,但是boot2.0和1.9.0就报错,具体看你的版本。


2-2:配置yml文件

需要在你的服务里面配置下面的代码,你配置你的controller位置就好了

#swagger扫包
swagger:
  base-package: com.xdx97.framework.controller

2-3:配置服务的Swagger2Config

这两个配置也是在你具体的服务里面配置的

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

@Configuration
@EnableSwagger2
public class Swagger2Config {

    public static final String VERSION = "1.0.0";

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo());
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                //设置文档的标题
                .title("工具相关服务")
                // 设置文档的描述
                .description("工具相关服务 API 接口文档")
                // 设置文档的版本信息-> 1.0.0 Version information
                .version(VERSION)
                // 设置文档的License信息->1.3 License information
                .build();
    }
}

2-3:配置zuul的SwaggerConfig

import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;
import springfox.documentation.swagger.web.SwaggerResource;
import springfox.documentation.swagger.web.SwaggerResourcesProvider;

import java.util.ArrayList;
import java.util.List;

@Component
@Primary
class SwaggerConfig implements SwaggerResourcesProvider {
    @Override
    public List<SwaggerResource> get() {
        List resources = new ArrayList<>();
        resources.add(swaggerResource("用户服务", "/xdx/myuser/v2/api-docs", "2.0"));
        resources.add(swaggerResource("工具服务", "/xdx/mytools/v2/api-docs", "2.0"));
        return resources;
    }

    private SwaggerResource swaggerResource(String name, String location, String version) {
        SwaggerResource swaggerResource = new SwaggerResource();
        swaggerResource.setName(name);
        swaggerResource.setLocation(location);
        swaggerResource.setSwaggerVersion(version);
        return swaggerResource;
    }
}

这里说一下上面代码中间的地址怎么配置。

我访问服务的接口是这样的:http://myzuul.com:9527/xdx/myuser/authority/menu/list

/xdx 是我的访问前缀,如果你没有你可以不要。

/myuser 是我的服务别名,你换成你的就好了。

假如说你的前缀是 /xxx, 服务名是 /yyy,那么你的地址就是: /xxx/yyy/v2/api-docs


3、具体应用

具体应用和SpringBoot是一样的,如果你会下面就可以不看了。

3-1:首先在controller配置注解@Api

@Api(tags = "用户相关接口", description = "提供用户相关的 Rest API")

在这里插入图片描述


3-2、get请求参数配置

在这里插入图片描述

@ApiOperation(value = "登录", notes = "创建人- 小道仙")
@ApiParam(value = "用户名", required = true)

3-3、post请求参数配置

3-3-1:先配置实体

在这里插入图片描述

@ApiModel("用户新增更新dto")
@ApiModelProperty("用户id")
3-3-2:配置接口

在这里插入图片描述


4、其它

4-1:全部注解可以看这里

https://www.leeyom.top/2017/09/25/tech-swagger-annotation/
https://www.ibm.com/developerworks/cn/java/j-using-swagger-in-a-spring-boot-project/index.html

4-2:常见错误

https://www.cnblogs.com/xiebq/p/9508848.html

4-3:代码是开源的,地址如下:

https://github.com/xdxTao/xdx-framework-SpringCloud


http://www.niftyadmin.cn/n/774977.html

相关文章

SpringBoot配置Filter和Interceptor【附带源码】

博客优先发表在个人博客&#xff0c;后续更新可能忘记同步到CSDN&#xff0c;望理解。 个人博客本篇文章地址&#xff1a;https://www.xdx97.com/article/698261857995063296 一、先看一下目录结构 二、我们先配置启动类和配置文件 这里面其实没有什么东西&#xff0c;但是为了…

单例模式【创建型模式】

文章优先发布在个人博客。 https://www.xdx97.com/article/699258099130695680 所谓单例模式&#xff0c;就是对某个类只能存在一个对象实例,并且该类只提供一个获取其对象实例的方法&#xff08;静态方法&#xff09; 单例模式一共有八种方式 1、饿汉式 &#xff08;静态常量…

个人网站引入B站视频播放,个人博客播放B站视频。【1080P】

最近想在个人博客播放我在B站上面的视频&#xff0c;花了三个下午&#xff0c;终于做好了。 有兴趣的可以先看看最终效果&#xff1a; https://www.xdx97.com/video 1、代码如下 <html> <head> <title>播放B站视频</title> <meta http-equiv…

工厂模式【创建型模式】

一、引入工厂模式 假如我们有一个手机接口里面有一个打电话方法&#xff08;call&#xff09;&#xff0c;它有两个实现类小米手机和华为手机。我们现在要去调用这两个实现类的call方法。 1-1:根据上面的说明写出代码 1-1-1&#xff1a; Phone public interface Phone {void …

原型模式【创建型模式】

文章首发个人博客&#xff1a;https://www.xdx97.com/article/703593125049794560 一、引出原型模式 如果我们有一个类&#xff08;sheep&#xff09;&#xff0c;它里面有两个属性&#xff0c;名称&#xff08;name&#xff09;&#xff0c;年龄&#xff08;age&#xff09;。…

建造者模式【创建型模式】

文章优先发表在个人博客&#xff1a; https://www.xdx97.com/article/704350509187727360 1、引出建造者模式 根据说明写出代码 我们需要建造房子&#xff0c;房子的种类有多种&#xff0c;这里只要求两种&#xff1a;平房、高楼。建房的过程两个&#xff0c;打地基、盖房。&a…

适配器模式【结构型模式】

一、引出适配器模式概念 我们要给手机充电&#xff0c;但是我们知道家用电是220v&#xff0c;而我们的手机一般是5v&#xff0c;如果我们直接使用那显然是不行的。这时候我们就需要一个转换器&#xff0c;也就是我们的充电器。它在内部把220v转换成5v。 我们的适配器也是同理&…

桥接模式【结构型模式】

文章优先发表在个人博客&#xff1a;https://www.xdx97.com/article/705731339978014720 1、引出桥接模式 我们有一个手机产品&#xff0c;手机下面有多个类型&#xff08;直板、翻盖&#xff09;&#xff0c;每个手机有多个生产商(小米、华为)。 我们可以按照下图的思路去构建…