SpringBoot整合swagger

现在Web项目前后端分离越来越多,前后端的沟通成本成了头大的难题。

上个项目虽然使用Postman已经降低了不少沟通成本,但是还是要手写不少Api到Postman测试,耗费了不少时间。这次新项目决定使用SpringBoot来做,各方面都节省了不少配置,一想到Api的对接就有点头大,于是决定把Swagger集成进来,实现Api文档的自动生成(通过http://localhost:8080/swagger-ui.html直接访问),这样前后端对接基本上就零成本了。

话不多说,搞起。

首先,pom引入swagger的依赖:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

然后在Springboot的Appilication类同目录下新建Swagger2.java。

Swagger2:

@Configuration
public class Swagger2 {

    //swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                //为当前包路径
                .apis(RequestHandlerSelectors.basePackage("com.deepinno.dojet.ims.jy.web"))
                .paths(PathSelectors.any())
                .build();
    }

    //构建 api文档的详细信息函数,注意这里的注解引用的是哪个
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                //页面标题
                .title("潇湘夜雨RESTful API")
                //创建人
                .contact(new Contact("潇湘夜雨", "https://crazycrabs.top", "[email protected]"))
                //版本号
                .version("1.0")
                //描述
                .description("潇湘夜雨API测试")
                .build();
    }

}

此时已经可以访问http://localhost:8080/swagger-ui.html。

写一个Controller来测试Swagger:

package com.deepinno.dojet.ims.jy.web;

import com.deepinno.dojet.ims.jy.model.user.UserInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/swagger")
@Api(value="/swagger", tags="测试接口模块")
public class TestController {

    @ApiOperation(value="展示首页信息value", notes = "展示首页信息notes")
    @GetMapping("/show")
    public Object showInfo(){
        return "hello world";
    }

    @ApiOperation(value="添加用户信息", notes = "添加用户信息")
    @ApiImplicitParam(name="userInfo", value="UserInfo", required = true, dataType = "UserInfo")
    @PostMapping("/addUser")
    public Object addUser(@RequestBody UserInfo userInfo){
        return "success";
    }

}

访问Swagger的UI,可以看到已经生成了相应的API接口:

至此完成了对Swagger的集成,更多功能只需对照文档即可实现。

可能会出现的问题处理:

如果项目已经配置了Shiro,访问会被Shiro拦截,修改Shiro的过滤器即可解决:

filterChainDefinitionMap.put("/swagger-ui.html", "anon");
filterChainDefinitionMap.put("/webjars/**", "anon");
filterChainDefinitionMap.put("/v2/**", "anon");
filterChainDefinitionMap.put("/swagger-resources/**", "anon");

如果访问Swagger UI显示404。可能是配置了自定义的WebMvcConfiguration(比如为了配置fastjson转换器),继承了WebMvcConfigurationSupport,而继承WebMvcConfigurationSupport的情况下,Springboot的默认静态资源过滤器就失效了,于是需要配置一下过滤器:

/**
     * 发现如果继承了WebMvcConfigurationSupport,则在yml中配置的相关内容会失效。
     * 需要重新指定静态资源
     * @param registry
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
        super.addResourceHandlers(registry);
    }

    /**
     * 配置servlet处理
     */
    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }

这样即可正常访问Swagger的UI。

原文地址:https://www.cnblogs.com/xtf2009/p/10236387.html

时间: 2024-08-30 15:08:49

SpringBoot整合swagger的相关文章

六、springboot整合swagger

六.springboot整合swagger 简介 swagger 提供最强大,最易用的工具,以充分利用OpenAPI规范. 官网 : https://swagger.io/ 准备工作 pom.xml jar引入: <swagger.version>2.9.2</swagger.version> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swag

SpringBoot整合Swagger测试api构建

@Author:SimpleWu 什么是Swagger? Swagger是什么:THE WORLD'S MOST POPULAR API TOOLING 根据官网的介绍: Swagger Inspector:测试API和生成OpenAPI的开发工具.Swagger Inspector的建立是为了解决开发者的三个主要目标. 执行简单的API测试 生成OpenAPI文档 探索新的API功能 我的理解Swagger是一个规范和完整的框架,用于生成.描述.调用和可视化RESTful风格的Web服务.简单

springBoot 整合 swagger 展示返回对象的嵌套属性文档注释

spring boot 处理 swagger 嵌套数据展示 在开发的过程中,我们会常常使用swagger做我们的在线文档.我们会在对象的属性上使用@ApiModelProperty 等api注解,但是遇到对象嵌套的时候,如何返回一个嵌套的json文档就需要我们做一些简单的处理 如果只在对象某个属性上使用 @ApiModelProperty 并不会起作用 12345678910111213141516171819202122232425262728293031 @Data@Slf4j@Builde

Spring Boot2 系列教程(十七)SpringBoot 整合 Swagger2

前后端分离后,维护接口文档基本上是必不可少的工作. 一个理想的状态是设计好后,接口文档发给前端和后端,大伙按照既定的规则各自开发,开发好了对接上了就可以上线了.当然这是一种非常理想的状态,实际开发中却很少遇到这样的情况,接口总是在不断的变化之中,有变化就要去维护,做过的小伙伴都知道这件事有多么头大!还好,有一些工具可以减轻我们的工作量,Swagger2 就是其中之一,至于其他类似功能但是却收费的软件,这里就不做过多介绍了.本文主要和大伙来聊下 在Spring Boot 中如何整合 Swagger

SpringBoot系列十一:SpringBoot整合Restful架构(使用 RestTemplate 模版实现 Rest 服务调用、Swagger 集成、动态修改日志级别)

1.概念:SpringBoot整合Restful架构 2.背景 Spring 与 Restful 整合才是微架构的核心,虽然在整个 SpringBoot(SpringCloud)之中提供有大量的服务方便整合,但是这些 整合都不如 Rest 重要,因为 Rest 是整个在微架构之中进行通讯的基础模式.那么对于 Rest 首先必须对其有一个最为核心的解释: 利用 JSON 实现数据的交互处理.而且 Spring 里面提供有一个非常强大的 RestTemplate 操作模版,利用此模版可以非常轻松的实

SpringBoot与Swagger整合

1 SpringBoot与Swagger整合https://blog.csdn.net/jamieblue1/article/details/99847744 2 Swagger详解(SpringBoot+Swagger集成)https://blog.csdn.net/ai_miracle/article/details/82709949 3 SpringBoot 使用Swagger2打造在线接口文档(附汉化教程)https://www.cnblogs.com/suizhikuo/p/93974

转:springboot 与swagger整合出现Unable to infer base url.This is common when using dynamic的解决办法

原文链接:https://blog.csdn.net/miachen520/article/details/95718639 今天在springboot与swagger整合测试的时候跳出如下所示界面 经查资料发现有两种解决办法, 1.直接把@EnableSwagger2注解加在主启动类就可以,这样虽然能解决问题,但是这样会扫到使用的框架的接口, 这种方法要慎用. 2.主启动类加上@ComponentScan("swagger配置类所在包"),以保证配置类被扫描到 最后解决问题之后就可以

swagger+springBoot整合集成(三步看明白)

swagger是什么? swagger是一个后台人员专门测试的一个简单工具,特别适合做前后端分离的项目,之前我们一直都是用的postman,但是这个有点复杂,路径需要自己,而swagger则直接使用,接下来我们就直接上代码说一说swagger,文采不好往见谅! 1.首先需要两个jar包 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifac

5分钟 springboot 整合swagger2

springboot 整合swagger2 1.maven配置文件中添加依赖 <properties> <swagger2.version>2.2.2</swagger2.version> </properties> -------------------------------------------------- <dependency> <groupId>io.springfox</groupId> <arti