1. 程式人生 > 其它 >11 — springboot整合swagger — 更新完畢

11 — springboot整合swagger — 更新完畢

1、前言

  • 理論知識濾過,自行百度百科swagger是什麼

2、匯入依賴


        <!--        swagger所需要的依賴-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.8.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.8.0</version>
        </dependency>
        <!--        這個依賴是為了渲染swagger文件頁面的( 為了好看一點罷了 ) ,swagger真正的依賴是上面兩個-->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>swagger-bootstrap-ui</artifactId>
            <version>1.8.5</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.75</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

4、編寫swagger配置檔案


package cn.xiegongzi.config;


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;

@Configuration      // 把當前類丟到spring容器中去
@EnableSwagger2     // 開啟swagger功能
public class SwaggerConfig {

    @Bean
    public Docket createRestApi() {
        // http://ip地址:埠/專案名/swagger-ui.html#/
        ApiInfo apiInfo = new ApiInfoBuilder()
                .title( "悠忽有限公司" )             // 網站標題    即:生成的文件網址標題
                .description( "這是一個很nice的介面文件" )        // 網站描述     即:對生成文件的描述
                .version( "9.0" )                 // 版本
                .contact( new Contact("紫邪情","https://www.cnblogs.com/xiegongzi/","110" ) )   // 聯絡人
                .license( "tcp" )             // 協議  http / https都可以
                .licenseUrl( "http://localhost:8080/" )   // 協議url 即:進入到swagger文件頁面的地址
                .build();
        return new Docket( DocumentationType.SWAGGER_2 ) // swagger版本
                .pathMapping( "/" )         // 請求對映路徑  就是:controller中有一個介面,然後前臺訪問的那個介面路徑
                                             // 這個可以在生成的文件中進行除錯時看到
                .select()           // 根據pathMapping去進行查詢( 做相應的操作 )
                // 掃描包   即:哪些地方可以根據我們的註解配置幫我們生成文件
                .apis( RequestHandlerSelectors.basePackage( "cn.xiegongzi" ) )
                .paths( PathSelectors.any() )
                .build()
                .apiInfo( apiInfo );
    }

}

5、編寫yml檔案


spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatis_spring?useUnicode=true&characterEncoding=utf-8
    username: root
    password: "072413"

6、編寫實體類


package cn.xiegongzi.entity;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

@Data
@AllArgsConstructor
@NoArgsConstructor

@ApiModel       // 表明這個實體類也可以生成到swagger文件中去  即:後臺要接收的引數是一個物件時使用 —— 這個東西可以先不加,在做增加、修改時可以用這個測試一下,從而去swagger中看效果
public class User implements Serializable {

    @ApiModelProperty       // 表明:要生成的實體類屬性是註解下的這個
    private Integer id;

    @ApiModelProperty
    private String username;

    @ApiModelProperty
    private String phone;
}

7、編寫mapper


package cn.xiegongzi.mapper;

import cn.xiegongzi.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface IUserMapper {

    @Select("select * from user")
    List<User> findAllUser();
}

8、編寫service介面和實現類

9、編寫controller


package cn.xiegongzi.controller;

import cn.xiegongzi.service.IUserService;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Api(tags = "使用者管理介面集")        // 表示當前類可以被生成一個swagger文件 , 可以跟引數tags,引數表示:這整個介面類的名字
public class UserController {

    @Autowired
    private IUserService userService;


    // @ApiImplicitParam 這個註解是對請求引數做限制用的,如:請求時要求前臺傳遞一個id,那麼:在這個註解裡面:就可以宣告這個引數的型別、
    // 是否為必填.....
    @GetMapping("/swaggger/doc")   // 遵循restful風格  要是使用@RequestMapping的話,會生成多個介面( 即:對應post、get.... )
    @ApiOperation(value = "獲取全部使用者介面" , notes = "獲取全部的使用者")
                                            // value這個介面的名字
                                            // 對這個介面的描述
    public String findAllUser() {

        return JSON.toJSONString( userService.findAllUser() );
    }
}

10、啟動專案,測試

以上的內容是入門,其他的註解開發時自行摸索吧