spring 4.0.9整合swagge2

一、添加Maven依赖,排除掉swagger2中spring有关依赖

         >
            >io.springfox>
            >springfox-swagger2>
            >2.0.1>
            >
                >
                    >com.google.guava>
                    >guava>
                >
                >
                    >org.springframework>
                    >spring-core>
                >
                >
                    >org.springframework>
                    >spring-beans>
                >
                >
                    >org.springframework>
                    >spring-context>
                >
                >
                    >org.springframework>
                    >spring-context-support>
                >
                >
                    >org.springframework>
                    >spring-aop>
                >
                >
                    >org.springframework>
                    >spring-tx>
                >
                >
                    >org.springframework>
                    >spring-orm>
                >
                >
                    >org.springframework>
                    >spring-jdbc>
                >
                >
                    >org.springframework>
                    >spring-web>
                >
                >
                    >org.springframework>
                    >spring-webmvc>
                >
                >
                    >org.springframework>
                    >spring-oxm>
                >
            >
         >
        >
            >io.springfox>
            >springfox-swagger-ui>
            >2.0.1>
        >

二、添加配置类

@EnableWebMvc
@EnableSwagger2
@Configuration
public class SwaggerConfig extends WebMvcConfigurationSupport {

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.qdp.controller")) // 注意修改此处的包名
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("接口列表 v1.1.0") // 任意,请稍微规范点
                .description("大屏接口") // 任意,请稍微规范点
                .termsOfServiceUrl("http://localhost:9098/swagger-ui.html") // 将“url”换成自己的ip:port
                .contact("作者") // 无所谓(这里是作者的别称)
                .version("1.1.0")
                .build();
    }
}

三、添加静态资源在springMVC配置文件中

 <!--加入 swagger2 资源文件-->
    <mvc:resources mapping="swagger-ui.html" location="classpath:/META-INF/resources/"/>
    <mvc:resources mapping="/webjars/**" location="classpath:/META-INF/resources/webjars/"/>

四、取消拦截三个路径

                /swagger*/**=anon
                /v2/**=anon
                /webjars/**=anon

五、编辑接口注解,并说明接口参数返回值

类上添加

@Api(value = "市重大项目大屏接口")

方法上添加

  @RequestMapping(value = "queryImportMainInfo",method = RequestMethod.POST)
    @ApiOperation(value = "重点项目概况",httpMethod = "POST",notes = " \"completeInv\": 0,    项目完成投资\n" +
            "        \"investNum\": 0,     项目总投资\n" +
            "        \"planInv\": 0,       年度计划投资\n" +
            "        \"startNum\": 0,     已开工项目数\n" +
            "        \"rateNum\": 0,      开工率\n" +
            "        \"projectNum\": 0    项目个数")

六、请求swagger页面

spring 4.0.9整合swagge2_第1张图片
spring 4.0.9整合swagge2_第2张图片
spring 4.0.9整合swagge2_第3张图片
spring 4.0.9整合swagge2_第4张图片
spring 4.0.9整合swagge2_第5张图片

七、swagger常用方法

@Api:用在类上,说明该类的作用。

@ApiOperation:注解来给API增加方法说明。

@ApiImplicitParams : 用在方法上包含一组参数说明。

@ApiImplicitParam:用来注解来给方法入参增加说明。

@ApiResponses:用于表示一组响应

@ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息

l   code:数字,例如400

l   message:信息,例如"请求参数没填好"

l   response:抛出异常的类   

@ApiModel:描述一个Model的信息(一般用在请求参数无法使用@ApiImplicitParam注解进行描述的时候)

l   @ApiModelProperty:描述一个model的属性

注意:@ApiImplicitParam的参数说明:

paramType:指定参数放在哪个地方

header:请求参数放置于Request Header,使用@RequestHeader获取

query:请求参数放置于请求地址,使用@RequestParam获取

path:(用于restful接口)–>请求参数的获取:@PathVariable

body:(不常用)

form(不常用)

name:参数名

dataType:参数类型

required:参数是否必须传

true | false

value:说明参数的意思

defaultValue:参数的默认值

代码示例

 
@Controller
@RequestMapping("/say")
@Api(value = "SayController|一个用来测试swagger注解的控制器")
public class SayController {
    
    @ResponseBody
    @RequestMapping(value ="/getUserName", method= RequestMethod.GET)
    @ApiOperation(value="根据用户编号获取用户姓名", notes="test: 仅1和2有正确返回")
    @ApiImplicitParam(paramType="query", name = "userNumber", value = "用户编号", required = true, dataType = "Integer")
    public String getUserName(@RequestParam Integer userNumber){
        if(userNumber == 1){
            return "张三丰";
        }
        else if(userNumber == 2){
            return "慕容复";
        }
        else{
            return "未知";
        }
    }
    
    @ResponseBody
    @RequestMapping("/updatePassword")
    @ApiOperation(value="修改用户密码", notes="根据用户id修改密码")
    @ApiImplicitParams({
        @ApiImplicitParam(paramType="query", name = "userId", value = "用户ID", required = true, dataType = "Integer"),
        @ApiImplicitParam(paramType="query", name = "password", value = "旧密码", required = true, dataType = "String"),
        @ApiImplicitParam(paramType="query", name = "newPassword", value = "新密码", required = true, dataType = "String")
    })
    public String updatePassword(@RequestParam(value="userId") Integer userId, @RequestParam(value="password") String password, 
            @RequestParam(value="newPassword") String newPassword){
      if(userId <= 0 || userId > 2){
          return "未知的用户";
      }
      if(StringUtils.isEmpty(password) || StringUtils.isEmpty(newPassword)){
          return "密码不能为空";
      }
      if(password.equals(newPassword)){
          return "新旧密码不能相同";
      }
      return "密码修改成功!";
    }
}

你可能感兴趣的:(spring 4.0.9整合swagge2)