springboot之swagger2簡單配置使用

簡單使用

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);
    }
}

重新啓動項目

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