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="根据name和id来获取用户详细信息") @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="根据name和id来删除用户详细信息") @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就结束了。