Swagger接口文檔生成

pom文件修改

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.6.1</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.6.1</version>
        </dependency>

新增配置類

import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket productApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo()).select()
                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("ilabservice example service")
                .description("example service to manage device")
                .version("1.0")
                .build();
    }
}

使用

常用註解


@Api:用在請求的類上,表示對類的說明
    tags="說明該類的作用,可以在UI界面上看到的註解"
    value="該參數沒什麼意義,在UI界面上也看到,所以不需要配置"
 
 
@ApiOperation:用在請求的方法上,說明方法的用途、作用
    value="說明方法的用途、作用"
    notes="方法的備註說明"
 
 
@ApiImplicitParams:用在請求的方法上,表示一組參數說明
    @ApiImplicitParam:用在@ApiImplicitParams註解中,指定一個請求參數的各個方面
        name:參數名
        value:參數的漢字說明、解釋
        required:參數是否必須傳
        paramType:參數放在哪個地方
            · header --> 請求參數的獲取:@RequestHeader
            · query --> 請求參數的獲取:@RequestParam
            · path(用於restful接口)--> 請求參數的獲取:@PathVariable
            · body(不常用)
            · form(不常用)    
        dataType:參數類型,默認String,其它值dataType="Integer"       
        defaultValue:參數的默認值
 
 
@ApiResponses:用在請求的方法上,表示一組響應
    @ApiResponse:用在@ApiResponses中,一般用於表達一個錯誤的響應信息
        code:數字,例如400
        message:信息,例如"請求參數沒填好"
        response:拋出異常的類
 
 
@ApiModel:用於響應類上,表示一個返回響應數據的信息
            (這種一般用在post創建的時候,使用@RequestBody這樣的場景,
            請求參數無法使用@ApiImplicitParam註解進行描述的時候)
    @ApiModelProperty:用在屬性上,描述響應類的屬性
        value–字段說明 
        name–重寫屬性名字 
        dataType–重寫屬性類型 
        required–是否必填 
        example–舉例說明 
        hidden–隱藏

Controller類

/**
 * @Classname HomePageService
 * @Description TODO
 * @Date 2019/10/29 9:52
 * @Created zzf
 */
@RestController
@RequestMapping("/user/base/home")
@Api(value = "home", description = "首頁相關接口", tags = {"home"})
public interface HomePageService {


    @ApiOperation(value = "獲取首頁輪播圖", notes = "獲取首頁輪播圖")
    @ApiResponses({
            @ApiResponse(code = 400, message = "參數非法"),
            @ApiResponse(code = 500, message = "服務器錯誤"),
            @ApiResponse(code = 200, message = "成功")
    })
    @ApiImplicitParams({
            @ApiImplicitParam(name = "bizType", value = "業務類型", dataType = "String", paramType = "path", required = true),
    })
    @GetMapping("/getSlideshow/{bizType}")
    CommonPageResult<List<Slideshow>> getSlideshow(@PathVariable("bizType") String bizType);
}

Model類

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * 首頁輪播圖
 *
 * @Classname Slideshow
 * @Description TODO
 * @Date 2019/10/29 9:45
 * @Created zzf
 */
@Data
@ApiModel(value = "slideshow")
@TableName("slideshow")
public class Slideshow {

    @ApiModelProperty(value = "輪播圖id", example = "1", dataType = "int")
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 圖片
     */
    @ApiModelProperty(value = "輪播圖url", example = "XXX.jpg", dataType = "String")
    @TableField(value = "picture")
    private String picture;

    /**
     * 排序
     */
    @ApiModelProperty(value = "排序號", example = "排序號", dataType = "Integer")
    @TableField(value = "sort")
    private Integer sort;


    /**
     * biztype
     */
    @ApiModelProperty(value = "業務類型", example = "1", dataType = "Integer")
    @TableField(value = "biz_type")
    private String bizType;
}

啓動後訪問:http://localhost:XXX/swagger-ui.html

 

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