Swagger配置

前言:

集成swagger到已進行interceptor配置的spring boot項目中;

解決問題:

1.swagger配置

2.interceptor不對swagger進行攔截


配置swagger

首先,在pom文件中引入依賴:

<properties>
        <io.springfox.version>2.9.2</io.springfox.version>
</properties>


<dependencies>
            <!-- swagger -->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>${io.springfox.version}</version>
            </dependency>
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>${io.springfox.version}</version>
            </dependency>
</dependencies>

而後,新建SwaggerConfig.java類:

package pers.tong.demo.guest.config;

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

/**
 * 〈config for swagger〉
 *
 * @author 2tong
 * @create 2020/3/18
 * @since 1.0.0
 */
@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
            .apis(RequestHandlerSelectors.basePackage("pers.tong.demo.guest.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("demo")
                .description("demo API 1.0 操作文檔")
                .version("1.0")
                .contact(new Contact("2tong雜貨鋪", "url", "mail"))
                .build();
    }
}

而後,針對inteceptor修改相關配置:

## properties文件進行配置
noAuthUrls=/swagger-ui.html,/swagger-resources/**,/error,/webjars/**

/***
 * 添加攔截器
 *
 * @param registry
 */
@Override
public void addInterceptors(InterceptorRegistry registry) {
      registry.addInterceptor(loginInterceptor).addPathPatterns("/**").
              excludePathPatterns(applicationProperty.getNoAuthUrls());
}

爲接口配置swagger支持

package pers.tong.demo.guest.controller;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import pers.tong.demo.guest.config.ApplicationProperty;
import pers.tong.demo.guest.dto.LoginDTO;
import pers.tong.demo.guest.dto.ModifyPasswordDTO;
import pers.tong.demo.guest.dto.RegisterDTO;
import pers.tong.demo.guest.po.User;
import pers.tong.demo.guest.service.UserService;
import pers.tong.demo.guest.util.redis.RedisOperator;
import pers.tong.demo.guest.vo.LoginVO;
import pers.tong.demo.guest.vo.UserVO;
import pers.tong.demo.guest.vo.result.FailResponse;
import pers.tong.demo.guest.vo.result.Response;
import pers.tong.demo.guest.vo.result.SuccessResponse;

import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;

@Api(value = "用戶", description = "用戶操作 API", position = 100, protocols = "http")
@RestController
@RequestMapping("/guest")
public class UserController {
    @Autowired
    private UserService userService;

    @Autowired
    private RedisOperator redisOperator;

    @Autowired
    private ApplicationProperty applicationProperty;


    private Logger logger = LoggerFactory.getLogger(this.getClass());

    @ApiOperation(
            value = "用戶註冊",
            notes = "根據參數創建用戶"
    )
    @PostMapping("/register")
    public Response register(@Valid RegisterDTO registerDTO){

        boolean result = userService.register(registerDTO);
        if(result){
            return new SuccessResponse<>();
        }
        else{
            return new FailResponse();
        }
    }
}

訪問頁面

默認訪問 http://localhost:8080/swagger-ui.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章