中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Springdoc替換swagger怎么實現

發布時間:2023-02-16 09:33:09 來源:億速云 閱讀:132 作者:iii 欄目:開發技術

這篇文章主要介紹“Springdoc替換swagger怎么實現”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Springdoc替換swagger怎么實現”文章能幫助大家解決問題。

前言

距離swagger上次發布版本已經過去兩年多了,一直沒有更新,與當前的springboot2.6.x、springboot2.7.x存在各種兼容問題,對于即將發布的springboot3.x,可能存在更多兼容問題。如下圖所示。

Springdoc替換swagger怎么實現

其實swagger還在更新,應該是springfox不更新導致的,所以需要使用其他的API管理工具代替,springdoc是一種選擇

一、springdoc介紹

SpringDoc是一款可以結合SpringBoot使用的API文檔生成工具,基于OpenAPI 3,是一款更好用的Swagger庫!值得一提的是SpringDoc不僅支持Spring WebMvc項目,還可以支持Spring WebFlux項目,甚至Spring Rest和Spring Native項目。

二、使用步驟

1.引入庫

gradle:

api group: 'org.springdoc', name: 'springdoc-openapi-ui', version: '1.6.11'

maven:

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-ui</artifactId>
    <version>1.6.11</version>
</dependency>

2.spring配置類

創建一個spring配置類,添加springdoc的配置

@AutoConfiguration
public class SpringDocConfig {
    @Bean
    public OpenAPI openAPI() {
        return new OpenAPI()
                .info(new Info()
                        .title("newframe-接口文檔")
                        .description("基于SpringDoc的在線接口文檔")
                        .version("0.0.1"));
    }
    @Bean
    public GroupedOpenApi publicApi() {
        return GroupedOpenApi.builder()
                .group("權限相關")
                .packagesToScan("com.iscas.biz.controller.common.auth")
                .build();
    }
    @Bean
    public GroupedOpenApi adminApi() {
        return GroupedOpenApi.builder()
                .group("默認")
                .pathsToMatch("/**")
                .build();
    }
}

3.常用的swagger注解和springdoc的對應關系

Springdoc替換swagger怎么實現

4.一個接口類的示例

@Tag(name = "組織機構管理-OrgController")
@RestController
@RequestMapping("/org")
@Validated
@ConditionalOnMybatis
public class OrgController extends BaseController {
    private final OrgService orgService;

    public OrgController(OrgService orgService) {
        this.orgService = orgService;
    }
    @Operation(summary="[組織機構]獲取組織機構樹", description="create by:朱全文 2021-02-20")
    @GetMapping
    public TreeResponse get() throws BaseException {
        return getTreeResponse().setValue(orgService.getTree());
    }
    @Operation(summary="[組織機構]新增組織機構節點", description="create by:朱全文 2021-02-20")
    @io.swagger.v3.oas.annotations.parameters.RequestBody(required = true, description = "組織機構數據",
            content = @Content(schema = @Schema(implementation = Org.class)))
    @PostMapping("/node")
    public ResponseEntity addNode(@Valid @RequestBody Org org) throws BaseException {
        return getResponse().setValue(orgService.addOrg(org));
    }
    @Operation(summary="[組織機構]修改組織機構節點", description="create by:朱全文 2021-02-20")
    @io.swagger.v3.oas.annotations.parameters.RequestBody(required = true, description = "組織機構數據",
            content = @Content(schema = @Schema(implementation = Org.class)))
    @PutMapping("/node")
    public ResponseEntity editNode(@Valid @RequestBody Org org) {
        return getResponse().setValue(orgService.editOrg(org));
    }
    @Operation(summary="[組織機構]刪除組織機構節點", description="create by:朱全文 2021-02-20")
    @io.swagger.v3.oas.annotations.parameters.RequestBody(required = true, description = "組織機構ID集合", content = @Content(examples = @ExampleObject(value = "[123, 124]")))
    @PostMapping("/node/del")
    @Caching(evict = {
            @CacheEvict(value = "auth", key = "'url_map'"),
            @CacheEvict(value = "auth", key = "'menus'"),
            @CacheEvict(value = "auth", key = "'role_map'")
    })
    public ResponseEntity deleteNode(@RequestBody List<Integer> orgIds) {
        AssertCollectionUtils.assertCollectionNotEmpty(orgIds, "orgIds不能未空");
        orgService.deleteNode(orgIds);
        return getResponse();
    }
}

5.配置文件配置

springdoc.swagger-ui.doc-expansion=none
springdoc.swagger-ui.path=/doc.html

還有其他的各種配置,可以在寫配置的時候查看提示

6.WebMvc配置

@AutoConfiguration
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.
                addResourceHandler("/swagger-ui/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/")
                .resourceChain(false);
        registry.
                addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/swagger-ui/")
                .setViewName("forward:/swagger-ui/index.html");
    }
}

7.UI

訪問地址:http://localhost:7901/demo/swagger-ui/ 或 http://localhost:7901/demo/doc.html
UI還使用swagger的UI,如下圖所示:

Springdoc替換swagger怎么實現

關于“Springdoc替換swagger怎么實現”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

正宁县| 大余县| 宜兰县| 河津市| 中西区| 濮阳市| 莱芜市| 太白县| 古田县| 大新县| 连山| 榆社县| 遂平县| 德阳市| 汽车| 固阳县| 饶河县| 平邑县| 南乐县| 武平县| 永春县| 昆山市| 香港| 芜湖县| 集贤县| 兴海县| 绥德县| 普定县| 长垣县| 密山市| 定边县| 天门市| 门头沟区| 江口县| 张北县| 曲靖市| 兴城市| 资兴市| 堆龙德庆县| 青阳县| 龙里县|