Spring Boot集成Swagger2

基于IDEA,JDK1.8

效果展示:

一、导入Maven包

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <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.8.0</version>
        </dependency>

网上用的springfox-swagger2是2.8.0,与springfox-swagger-ui版本对应,但是我的会报错,原因不知,于是用了2.9.2版本

二、配置Swagger2

package com.alan.xxx;

import io.swagger.annotations.ApiOperation;
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;

@Configuration
@EnableSwagger2
public class Swagger2Config {

    @Bean
    public Docket docket() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("初探Swagger2的组")
                .apiInfo(apiInfo())
                .select()
                // 设置basePackage会将包下的所有类的所有方法作为api
//                .apis(RequestHandlerSelectors.basePackage("com.alan.xxx.controller"))
                // 只有标记@ApiOperation才会暴露出给swagger
                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                .paths(PathSelectors.regex("/api/.*"))
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("初探Swagger2")
                .description("RESTful风格接口") //描述
                .version("1.0")
                .build();
    }
}

三、添加API

package com.alan.xxx.controller;

import io.swagger.annotations.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@Api(value = "User API接口", tags = "user", description = "User API接口")    //接口描述
@RequestMapping("/api")        //设置/api开头,与二设置的/api/.*一致
@RestController
public class HelloWorldController {

    @ApiOperation(value = "用户登录", notes = "用户登录接口")
    @ApiResponses({
            @ApiResponse(code = 0, message = "success"),
            @ApiResponse(code = 10001, message = "用户名错误", response = IllegalArgumentException.class),
            @ApiResponse(code = 10002, message = "密码错误")
    })
    @PostMapping(value = "/login")
    public String login(@ApiParam(name = "username", value = "用户名", required = true)         
@RequestParam String username,
                        @ApiParam(name = "password", value = "密码", required = true) @RequestParam String password)
    {
        return username + "," + password;
    }

    @ApiOperation(value = "管理员登录", notes = "管理员登录接口")
    @ApiResponses({
            @ApiResponse(code = 0, message = "success"),
            @ApiResponse(code = 10001, message = "用户名错误", response = IllegalArgumentException.class),
            @ApiResponse(code = 10002, message = "密码错误")
    })
    @PostMapping(value = "/admin-login")
    @ApiImplicitParams({@ApiImplicitParam(paramType = "body",name = "username",required = false,value = "用户名"),
            @ApiImplicitParam(paramType = "body",name = "password",required = false,value = "密码")})
    public String adminLogin(@RequestParam String username,@RequestParam String password) 
    {
        return username + "," + password;
    }
}

@ApiImplicitParam      作用于方法上

@ApiParam                 作用于参数上

@ApiImplicitParams    包含多个@ApiImplicitParam

四、加密

效果展示:

1.添加Maven包

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

2.修改配置文件application.properties

#为swagger设置密码
spring.security.basic.path=/swagger-ui.html
spring.security.basic.enabled=true

spring.security.user.name=admin
spring.security.user.password=admin

3.重写 WebSecurityConfigurerAdapter

package com.alan.xxx.sercurity;

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

/**
 * Spring Security 会拦截swagger-ui.html 同样也会拦截api,这里将或略掉/api/下的所有子路径
 */
@EnableWebSecurity
@Configuration
public class CustomWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
    @Override
    public void configure(WebSecurity web) throws Exception {
        super.configure(web);
        web.ignoring().antMatchers("/api/**");
    }
}

参考网址:https://blog.csdn.net/vbirdbest/article/details/79680732

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值