Spring Boot 集成 Swagger

北城余情 提交于 2020-01-21 16:12:06
  • Swagger 使用指南

    • 添加pom 依赖

      <dependency>
          <groupId>io.springfox</groupId>
          <artifactId>springfox-swagger2</artifactId>
          <version>2.7.0</version>
      </dependency>
      <dependency>
          <groupId>io.springfox</groupId>
          <artifactId>springfox-swagger-ui</artifactId>
          <version>2.6.1</version>
      </dependency>
      
    • 创建Swagger 配置类

      @Configuration     // 通过@Configuration注解,让Spring来加载该类配置。
      @EnableSwagger2    // 再通过@EnableSwagger2注解来启用Swagger2
      public class Swagger2 {
          @Bean
          public Docket createRestApi() {
              List<Parameter> pars = new ArrayList<>();
              pars.add(new ParameterBuilder().name("version").description("版本")
                       .modelRef(new ModelRef("string")).parameterType("header")
                       .required(true).defaultValue("3.5.4").hidden(true).build());
            
              pars.add(new ParameterBuilder().name("platform")
                       .description("平台:1安卓 2:ios")
                       .modelRef(new ModelRef("string")).parameterType("header")
                       .required(true).defaultValue("2").hidden(true).build());
      
              return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.api.*"))
                .paths(PathSelectors.any())
                .build()
                .ignoredParameterTypes(User.class)
                .globalOperationParameters(pars);
          }
      
          private ApiInfo apiInfo() {
              return new ApiInfoBuilder().title("APP_API v3 接口文档")
                .description("更多请关注http://www.baidu.com")
                .termsOfServiceUrl("http://blog.didispace.com/")
                .contact("alevi").version("3.0").build();
          }
      }
      
    • 添加文档内容

      @Controller
      @RequestMapping("/user")
      // 用在类上,说明该类的作用
      @Api(value = "UserController", description = "用户相关的Rest接口")
      public class UserController extends BaseController {
        
        @ResponseBody
        @RequestMapping(value ="/getUserName", method= RequestMethod.GET)
        // 用在方法上,给API增加方法说明
        @ApiOperation(value="根据用户编号获取用户姓名", notes="test: 仅1有正确返回")
        @ApiImplicitParams({  // 用在方法上,包含一组参数说明
          // 给方法入参增加说明。 可以多个参数 ,重复配置
          @ApiImplicitParam(name = "userNumber", value = "用户编号", required = true, dataType = "Integer", paramType = "query")
        })
        @ApiResponses(value = {   // 用于表示一组响应
          // 用在@ApiResponses中,一般用于表达一个错误的响应信息
          @ApiResponse(code = 1, message = "Successful — 请求已完成"),
          @ApiResponse(code = 400, message = "请求中有语法问题,或不能满足请求"),
          @ApiResponse(code = 401, message = "未授权客户机访问数据"),
          @ApiResponse(code = 500, message = "服务器不能完成请求")
        })
        public ResultModel getUserName(@RequestParam Integer userNumber){
          if(userNumber == 1){
              ResultModel resultModel = new ResultModel();
              resultModel.status = 1;
              resultModel.message = "";
            	resultModel.data = "张三丰";
            	return resultModel;
          }else{
            	return ResultModel.error(400, "userNumber 不存在");
          }
        }
      }
      
      // 描述一个Model的信息(一般用在请求参数无法使用@ApiImplicitParam注解进行描述的时候)
      @ApiModel(value = "福利Model", description = "ActivityWelfareListModel")
      public class ResultModel<T> implements java.io.Serializable {
      	  private static final long serialVersionUID = 1633103597476168895L;
      		
          // 描述一个model的属性
          @ApiModelProperty(value = "返回码", required = true)
          private int status;
      
          @ApiModelProperty(value = "结果描述", required = true)
          private String message;
        
          @ApiModelProperty(value = "数据", required = true)
          private T data;
        
        	public static ResultModel error(int status, String message) {
              ResultModel resultModel = new ResultModel();
              resultModel.status = status.getCode();
              resultModel.message = status.getMessage();
              return resultModel;
          }
      }
      
  • 测试地址 : http://localhost:8080/swagger-ui.html

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!