簡單使用
1.配置依賴
<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.7.0</version>
</dependency>
2.編寫相應配置類
webApiConfig()方法中的:Predicates.not(PathSelectors.regex("/myhouse/admin/.*"))指的是過濾/myhouse/admin/.*接口的所有rul不接收。
adminApiConfig()方法中的:Predicates.and(PathSelectors.regex("/myhouse/admin/.*"))指的是接收/myhouse/admin/.*的所有接口
package com.example.homeManager.config;
import com.google.common.base.Predicates;
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.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;
@Configuration
@EnableSwagger2
public class Swagger2Config {
@Bean
public Docket webApiConfig(){
return new Docket(DocumentationType.SWAGGER_2)
.groupName("webApi")
.apiInfo(webApiInfo())
.select()
.paths(Predicates.not(PathSelectors.regex("/myhouse/admin/.*")))
.paths(Predicates.not(PathSelectors.regex("/error.*")))
.build();
}
private ApiInfo webApiInfo(){
return new ApiInfoBuilder()
.title("網站-××微服務API文檔")
.description("本文檔描述了××微服務接口定義")
.version("1.0")
.contact(new Contact("ojb","localhost:8082/myhouse/sys","[email protected]"))
.build();
}
@Bean
public Docket adminApiConfig(){
return new Docket(DocumentationType.SWAGGER_2)
.groupName("adminApi")
.apiInfo(adminApiInfo())
.select()
.paths(Predicates.and(PathSelectors.regex("/myhouse/admin/.*")))
.build();
}
private ApiInfo adminApiInfo(){
return new ApiInfoBuilder()
.title("後臺管理系統-用戶管理API文檔")
.description("本文檔描述了後臺管理系統微服務接口定義")
.version("1.0")
.contact(new Contact("ojb","localhost:8082/myhouse/sys","[email protected]"))
.build();
}
}
3.控制器
@requestMapping()註解中,/myhouse是項目名,admin指的是後臺管理系統名稱
package com.example.homeManager.controller;
import com.example.homeManager.entity.User;
import com.example.homeManager.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/myhouse/admin/sys")
@CrossOrigin //跨域
public class LoginController {
@Autowired
private UserService userService;
@GetMapping("/users")
public List<User> test(){
return userService.selectUsers();
}
}
4.啓動項目
數據訪問沒有問題
url輸入:http://localhost:8082/swagger-ui.html打開swagger ui
adminApi:
webApi:
swgger其他配置:
實體類配置
需要在類前加@ApiModel註解
屬性加上@ApiModelProperty註解
時間類屬性可加時間格式例子:
@ApiModelProperty(value = "是否禁用",example = "2020-01-10 10:10:10")
package com.example.homeManager.entity;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
@TableName(value = "sys_user")
@ApiModel(value = "User對象",description = "用戶")
public class User {
// 數據庫的id自增方式:@TableId(value = "id",type = IdType.AUTO)
@TableId(value = "id",type = IdType.ID_WORKER_STR)
@ApiModelProperty(value = "用戶ID")
private String id;
@TableField(value = "accound")
@ApiModelProperty(value = "用戶賬號")
private String acc;
@ApiModelProperty(value = "用戶密碼")
private String password;
@ApiModelProperty(value = "用戶姓名")
private String name;
@TableField(value = "user_class")
@ApiModelProperty(value = "用戶類型")
private String userClass;
@TableField(value = "house_id")
@ApiModelProperty(value = "房間號")
private String houseId;
@TableField(value = "ruzhu_time")
@ApiModelProperty(value = "入住時間")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date ruzhuTime;
@TableField(value = "out_time")
@ApiModelProperty(value = "搬出時間",example = "2020-01-10 10:10:10")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date outTime;
@ApiModelProperty(value = "是否禁用",example = "2020-01-10 10:10:10")
private String ban;
//fill = FieldFill.INSERT自動填充數據庫表字段內容,結合MyMetaObjectHandler類
@TableField(value = "create_time",fill = FieldFill.INSERT)
@ApiModelProperty(value = "創建時間",example = "2020-01-10 10:10:10")
private Date createTime;
@TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
@ApiModelProperty(value = "修改時間",example = "2020-01-10 10:10:10")
private Date updateTime;
@Version
@ApiModelProperty(value = "樂觀鎖")
private Integer version;
@TableField(value = "is_deleted")
@ApiModelProperty(value = "是否刪除")
@TableLogic
private boolean deleted;
// private UserClass userClassName;
}
控制器配置:
類前加上@Api註解
接口方法加上@ApiOperation註解
刪除方法有參數:
@ApiParam(name = "id",value = "用戶id",required = true)
package com.example.homeManager.controller;
import com.example.homeManager.entity.User;
import com.example.homeManager.service.UserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/myhouse/admin/sys")
@CrossOrigin //跨域
@Api(description = "用戶列表")
public class LoginController {
@Autowired
private UserService userService;
@ApiOperation(value = "所有用戶列表")
@GetMapping("/users")
public List<User> users(){
return userService.selectUsers();
}
@ApiOperation(value = "根據id刪除用戶")
@DeleteMapping("/users/{id}")
public boolean delete(
@ApiParam(name = "id",value = "用戶id",required = true)
@PathVariable String id){
return userService.deleteById(id);
}
}