在Spring启动微服务中为多个控制器配置Swagger

时间:2018-03-28 08:08:32

标签: spring-boot swagger

我正在尝试使用Swagger在我使用spring boot开发的微服务中添加ReST API文档。我为一个控制器正确添加了。但是,当我添加两个控制器。它没有在swagger-ui.html中列出。

让我在这里添加我的发现,

我的招摇配置文件

@EnableSwagger2
@PropertySource("classpath:swagger.properties")
@ComponentScan(basePackageClasses = { 
  WebController.class,TestController.class})
@Configuration

public class SwaggerConfig {

    private static final String SWAGGER_API_VERSION = "1.0";
    private static final String LICENSE_TEXT = "License";
    private static final String title = "Spacestudy Framework REST API";
    private static final String description = "docs for test Framework";

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title(title)
                .description(description)
                .license(LICENSE_TEXT)
                .version(SWAGGER_API_VERSION)
                .build();
    }

    @Bean
    public Docket frameworkApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .pathMapping("/")
                .select()
                .paths(PathSelectors.regex("/api.*"))
                .build();
    }
 }

我的第一个控制器文件是,

@RestController
@RequestMapping("api/${urlLink}")
@Api(value = "WebControllerAPI", produces = 
 MediaType.APPLICATION_JSON_VALUE)

public class WebController {

@PutMapping("/loadMessage/{message}")
@ApiOperation("Insert test Srting ")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = 
  WebController.class)})
public String insertMessage(@PathVariable("message") String message) {
    return message;
 }
}

我的第二个控制器文件是,

 @RequestMapping("api/${urlLink}")
 @Api(value = "TestControllerAPI", produces = 
  MediaType.APPLICATION_JSON_VALUE)
public class TestController {

  @PutMapping("/loadMessage/{message}")
  @ApiOperation("Insert test Srting ")
  @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = 
    WebController.class)})
   public String insertMessage(@PathVariable("message") String message) {
    return message;
    }
}

我只从Swagger ui获得WebController API文档。我没有得到TestController端点文档。

我在这里添加截图:

enter image description here

2 个答案:

答案 0 :(得分:3)

两点:

  1. 您需要将TestController声明为@RestController,因为我在给定的代码中看不到它。
  2. 您需要将TestController映射到api/${urlLink}(可能是test/api/${urlLink}api/test/${urlLink})之外的其他路径,因为它已经分配给{{1} }。

答案 1 :(得分:2)

将其添加到您的档案夹配置中,无需指定路径。

.apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))