springBoot 整合 Swagger2 实现接口文档生成和测试接口

 Swagger2 可以实现接口文档生成和测试接口

1:首先导入需要的依赖

<!--swagger2-->
<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger2</artifactId>
   <version>2.2.2</version>
</dependency>
<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger-ui</artifactId>
   <version>2.2.2</version>
</dependency>

2:创建需要的SwaggerConfig

这里有个问题,就是了能Swagger只是用在开发阶段。在生成阶段不需要,可以稍微配置一下,因为进入生成上线,接口可能会被破解,所有最好是生产环境拼比Swagger2的相关信息


package com.example.jedis.config;

import org.springframework.beans.factory.annotation.Value;
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;

/**
 * ***GOOD LUCK****
 *
 * @Author : Wukn
 * @Date : 2018/6/20
 */
@Configuration
@EnableSwagger2
public class Swagger2Config {


    @Value( "${swaggerShow.show}" )
    private boolean swaggerShow;


    /**
     * 创建API基本信息
     * @return
     */
    @Bean
    public Docket createRestApi() {
        if(swaggerShow) {
            return new Docket( DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
                    //扫描需要展示的api接口
                    .apis( RequestHandlerSelectors.basePackage("com.example.jedis.controller"))
                    .paths( PathSelectors.any())
                    .build();
        }else {
            return new Docket( DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
                    .apis( RequestHandlerSelectors.basePackage("cmo.00.00.0.0"))
                    .paths( PathSelectors.any())
                    .build();
        }

    }



    private ApiInfo apiInfo() {
        if(swaggerShow) {
            return new ApiInfoBuilder()
                    .title("Jedis项目开发阶段使用swagger查看接口")
                    .description("基于springBoot的整合开发")
                    .termsOfServiceUrl("http://www.baodu.com/")
                    .contact("wkn")
                    .version("1.0")
                    .build();
        }else {
            return new ApiInfoBuilder()
                    .title("项目生产阶段禁止使用swagger查看接口")
                    .description("基于springBoot的整合开发")
                    .termsOfServiceUrl("http://www.baodu.com/")
                    .contact("")
                    .version("")
                    .build();
        }

    }

}




3:在具体的接口中使用注解

package com.example.jedis.controller;

import com.example.jedis.bean.Student;
import com.example.jedis.response.ResultClient;
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.validation.BindingResult;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

/**
 *
 * @Author : Wukn
 * @Date : 2018/6/12
 */
@Api(value = "web端的接口 用于测试请求")
@RestController
@RequestMapping(value = "/stu")
public class StudentController {


    Logger logger = LoggerFactory.getLogger( StudentController.class );

    /**
     * 测试
     * @param student
     * @param
     * @return
     */
    @ApiOperation(value="添加用户", notes="根据User对象创建用户")
    @PostMapping(value = "/sava")
    @ResponseBody
    public ResultClient save( @RequestBody @Valid Student student, BindingResult result) throws Exception{
        logger.info( student+"" );
//        List<String> list1 = new ArrayList <>(  );
//        if(result.hasErrors()) {
//           List<ObjectError> list =  result.getAllErrors();
//           for (ObjectError ob:list) {
//               logger.info( ob +"");
//               //ob.getDefaultMessage()  获得具体的异常信息
//               list1.add( ob.getDefaultMessage() );
//           }
//        }
            return new ResultClient( student );
    }


    /**
     *
     * @param student
     * @param result
     * @return
     */
    @ApiOperation(value="获取用户详细信息", notes="根据nameid来获取用户详细信息")
    @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long")
    @PostMapping(value = "/find")
    @ResponseBody
    public Object finds(@RequestBody @Valid Student student, BindingResult result) {
        logger.info( "re"+student );
        System.out.println(student+"sd");
        return "ok";
    }



    /**
     *
     * @param student
     * @param id
     * @param result
     * @return
     */
    @ApiOperation(value="删除用户详细信息", notes="根据nameid来删除用户详细信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long"),
            @ApiImplicitParam(name = "student", value = "用户详细实体user", required = true, dataType = "User")
    })
    @PostMapping(value = "/delete")
    @ResponseBody
    public Object delete(@RequestBody @Valid Student student, @RequestBody Long id ,BindingResult result) {
        logger.info( "re"+student );
        System.out.println(student+"sd");
        return "ok";
    }






}

4:查看网页信息



每个接口对于不同的信息,点进去可以查看更加具体的接口信息



这样就OK了

如果在生成环境乐意将swaggerShow.show = false  这样在生成环境访问Swagger相关的信息就被屏蔽了。


到此springBoot 整合 Swagger2就结束了。



  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

托尼吴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值