基於SpringBoot的Swagger使用

Swagger使用:

1. pom.xml文件中引用:

<!--swagger2所需要的jar  -->
<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger2</artifactId>
   <version>2.4.0</version>
</dependency>
<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger-ui</artifactId>
   <version>2.4.0</version>
</dependency>

 

2. 新建啓動類(SpringBoot爲例)

package com.pk.wxApp;

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.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * Swagger
 *
 *
@author pk
 *
 */
@Configuration
@EnableSwagger2
public class Swagger2 {

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.pk.wxApp.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("微信小程序 API")
                .description("主要提供基於http的API給微信小程序系統的前端頁面調用以獲取或更新數據。")
                .contact(new Contact("pk","www.pk.com","123456789@qq.com"))
                .version("1.0")
                .build();
    }

}

 

 

3. Controller類中添加註解

@Api()

用於類:表示標識這個類是swagger的資源

tags–表示說明

value–也是說明,可以使用tags替代

例如:

@Api(value = "user",tags={"用戶操作"})

 

@ApiOperation() 用於方法:表示一個http請求的操作

value用於方法描述

notes用於提示內容

tags可以重新分組(視情況而用)

 

@ApiParam() 用於方法,參數,字段說明;表示對參數的添加元數據(說明或是否必填等)

name–參數名

value–參數說明

required–是否必填

例如:

@ApiOperation(value="登錄接口", notes="登錄接口")
@RequestMapping(value = "/test",method = {RequestMethod.POST})
@ResponseBody
public BaseResponse<String> test(@ApiParam(name = "userName",value = "用戶名",required = true)@RequestParam(value = "userName",required = true)String userName,
      @ApiParam(name = "passWord",value = "密碼",required = true)@RequestParam("passWord")String passWord,
      HttpServletRequest request, HttpServletResponse response){
   BaseResponse<String> resp = new BaseResponse<>();
   logger.info("用戶名:"+userName+"  密碼:"+passWord);
   resp.setData("{'userName':"+userName+",'passWord':"+passWord+"}");
   return resp;
}

 

 

4. 請求的實體或返回的實體類

@ApiModel()用於類 :表示對類進行說明,用於參數用實體類接收

value–表示對象名

description–描述

都可省略

@ApiModelProperty()用於方法,字段: 表示對model屬性的說明或者數據操作更改

value–字段說明

name–重寫屬性名字

dataType–重寫屬性類型

required–是否必填

example–舉例說明

hidden–隱藏

 

例如:

@ApiModel(value = "用戶查詢返回信息")
public class UserInfoResp {
    @ApiModelProperty(value = "用戶名")
    private String userName;

    @ApiModelProperty(value = "性別")
    private String sex;

 

 

 

SpringBoot打開頁面:

http://127.0.0.1:8080/swagger-ui.html

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章