我正在尝试使用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端点文档。
我在这里添加截图:
答案 0 :(得分:3)
两点:
TestController
声明为@RestController
,因为我在给定的代码中看不到它。TestController
映射到api/${urlLink}
(可能是test/api/${urlLink}
或api/test/${urlLink}
)之外的其他路径,因为它已经分配给{{1} }。 答案 1 :(得分:2)
将其添加到您的档案夹配置中,无需指定路径。
.apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))