Swagger 的食用過程

技術(shù)

語言 : Java

框架 : SpringBoot + Swagger

工具 : Maven + IDEA + PostMan + Swagger

GitHub項目地址 : Swagger

說明

# 絲襪哥 `Swagger` 是研發(fā)的好幫手,可以減少很多后端和前端的溝通的成本,甚至在很多高級的公司,還能夠減少后端和測試人員的溝通成本.所以只需要一個項目采用了SpringBoot框架,絲襪哥 `Swagger` 幾乎就是必須要選擇的組件
# 在之前 Swagger的工具的starter是百花齊放,而現(xiàn)在,終于有了官方的啟動工具類,接下來就是快速食用工具

pom依賴

<!--導入 絲襪哥 (Swagger)-->
<dependency>
<groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>
<!--配置jar包-->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-oas</artifactId>
    <version>3.0.0</version>
</dependency>

瀏覽器訪問地址

http://localhost:8181/springboot-swagger/swagger-ui/

有網(wǎng)址說需要添加 @EnableOpenApi 注解,但其實是不需要的

接口文檔的首頁截圖

關于整合認證(權(quán)限)插件

如果用到了Spring Security 權(quán)限的控制組件,記得要加入白名單

//例如
String[] SWAGGER_WHITELIST = {
        "/swagger-ui.html",
        "/swagger-ui/*",
        "/swagger-resources/**",
        "/v2/api-docs",
        "/v3/api-docs",
        "/webjars/**"
};
httpSecurity.cors()
        .antMatchers(SWAGGER_WHITELIST).permitAll();

但是在某些時候,我們使用了 JWT 這樣的中間件 , 就需要在請求接口的時候,在 Header 中構(gòu)造一個token,Swagger 也支持了他們

//基礎的配置

/**
 * SwaggerConfig
 * Swagger 的實體類
 * @author HCY
 * @since 2020/10/15
 */
@Configuration
public class SwaggerConfig {
    @Bean
    public Docket createRestApi(){
        return new Docket(DocumentationType.SWAGGER_2)
                //開啟個人信息
                .apiInfo(apiInfo())
                .select()
                .build()
                //每一個請求都可以添加header
                .globalRequestParameters(globalRequestParameters())
                //開啟全局的token
                .securitySchemes(security());

    }
    
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                //api文本
                .title("曉尋遙 api")
                //說明
                .description("更多請咨詢曉尋遙")
                //用戶名 + 網(wǎng)址 + 郵箱
                .contact(new Contact("曉尋遙" ,
                        "https://github.com/xiaoxunyao" ,
                        "2414776185@qq.com"))
                //版本
                .version("1.0")
                //運行
                .build();
    }
}

第一種,通過全局的Auth認證方式

private List<SecurityScheme> security() {
        ApiKey apiKey = new ApiKey("Token", "Token", "header");
        return Collections.singletonList(apiKey);
}
全局token

第二種, 每個請求一個token , 適用于 快速過期的JWT模式

private List<RequestParameter> globalRequestParameters() {
        RequestParameterBuilder parameterBuilder = new RequestParameterBuilder()
                //每次請求加載header
                .in(ParameterType.HEADER)
                //頭標簽
                .name("Token")
                .required(false)
                .query(param -> param.model(model -> model.scalarModel(ScalarType.STRING)));
        return Collections.singletonList(parameterBuilder.build());
}
每個請求都帶上token

結(jié)束

# 不用自己寫接口文檔了,讓前端的小伙伴看了一下 絲襪哥 `Swagger` ,小伙伴說再也不想看我寫的接口文檔了,我就明白了,用它用它.
# nice
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容