swagger3.0(springboot)消除basic-error-controller


1、新建springboot項目,可以通過https://start.spring.io/快速生成springboot項目。

2、引入jar依賴:

<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-boot-starter</artifactId>
  <version>3.0.0</version>
</dependency>

3、編寫Controller,並配置相應的注解,見下圖

package com.demo.incubator.swaggerdemo.controller;

import java.util.Map;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;

@RestController
@RequestMapping("/demo")
@Api(protocols = "http,https", produces = "application/json", tags = "mock樣例")
public class SwaggerDemoController {
    @PostMapping("/mokeInvoke")
    @ApiOperation(value = "mock方法樣例", notes = "返回一個字符串")
    public String mockInvoke(@ApiParam(value = "顯示的信息", required = true) @RequestParam("showMsg") String showMsg) {
        return showMsg;
    }

    @PostMapping("/mokeInvoke2")
    @ApiOperation(value = "mock方法樣例2", notes = "返回一個字符串")
    @ApiImplicitParams({@ApiImplicitParam(value = "手機號", name = "userPhone", required = true, paramType = "query"),
            @ApiImplicitParam(value = "姓名", name = "userName", required = true, paramType = "query"),
            @ApiImplicitParam(value = "地址", name = "address", required = true, paramType = "query"),
            @ApiImplicitParam(value = "系統來源", name = "appid", required = true, paramType = "header")})
    public String mockInvoke2(@RequestBody Map<String, Object> params) {
        return JSON.toJSONString(params);
    }

}

4、啟動項目,訪問鏈接地址http://localhost:8080/swagger-ui/index.html(端口換成自己配置的端口),即可看到swagger頁面,如下圖

5、但是會發現多出來basic-error-controller、operation-handler、web-mvc-links-handler,可以通過新建一個Configration來消除,只保留我們對外提供的接口

package com.demo.incubator.swaggerdemo.config;

import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

@Configuration
public class SwaggerConfiguration {
//注意標黃的地方要求能匹配到你所有的接口路徑,比如我的例子中兩個接口都是以demo開始的,/demo/mockInvoke和/demo/mockInvoke2 @Bean Docket xiaokeai() {
return new Docket(DocumentationType.OAS_30).useDefaultResponseMessages(false) .produces(Stream.of("application/xml", "application/json").collect(Collectors.toSet())).select() .paths(PathSelectors.regex("/demo/.*")).build() .protocols(Stream.of("http", "https").collect(Collectors.toSet())); } }

6、再次啟動項目,就會發現只保留了自有的controller暴露的接口。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM