Spring Boot和Swagger

时间:2017-02-10 23:13:02

标签: spring-mvc swagger-ui swagger-2.0

我有一个Spring boot 1.5.1RELEASE应用程序,我正在尝试使用Swagger。我添加了依赖项:

compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.5.0'
compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.5.0'compile('org.springframework.boot:spring-boot-devtools')
compile("org.springframework.boot:spring-boot-starter-web:1.5.1RELEASE)

然后是/ config类:

@Configuration
@EnableSwagger2
public class SwaggerConfig {    
    @Bean
    public Docket api() {    
        return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.any())
                        .paths(PathSelectors.any()).build();           
    }    

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                        .title("My API Documentation ")
                        .description("Swagger API Documentation provided for your viewing pleasure")
                        .version("1.0")
                        .build();
    }
}

我有一个GET端点

@Api(value = "/words", description = "Words API", produces = "application/json")
@RestController
@RequestMapping("/words")
public class WordsController {

@ApiOperation(value = "getAllWords", nickname = "getAllWords",
              response = ResponseEntity.class, httpMethod = "GET")
@ApiResponses(value = {
                @ApiResponse(code = 200, message = "Success", response = ResponseEntity.class),
                @ApiResponse(code = 500, message = "Failure")
                })
@RequestMapping( method = RequestMethod.GET)
@ResponseBody
    public ResponseEntity getAllWords() {
...}

但是当我在http://localhost:3000/swagger-ui.html访问我的api时(我将我的服务器配置为在端口3000上运行)我只得到了绿色的招摇吧 enter image description here

我正在构建几个教程,但我不明白为什么我的Swagger文档没有被呈现

1 个答案:

答案 0 :(得分:0)

在配置类中似乎是一个问题,请尝试使用以下swagger配置类

import static com.google.common.base.Predicates.or;
import static springfox.documentation.builders.PathSelectors.regex;
import com.google.common.base.Predicate;

import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * Sample Swgger config.
 *
 * @author Eranga
 */
@Configuration
@EnableSwagger2
public class MySwaggerConfig  {

    /**
     * Grouping only words api end points.
     *
     * @return the docket
     */
    @Bean
    public Docket myApi() {
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().paths(myApiPath()).build();
    }

    /**
     * Filtering only media activity api end points.
     *
     * @return the predicate
     */
    private Predicate<String> myApiPath() {
        return or(regex("//words.*"));
    }

    /**
     * Api info.
     *
     * @return the api info
     */
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder().title("My API title")
                .description(
                        "my Api desc")
                .termsOfServiceUrl("http://erangakodikara.blogspot.com/").contact("Eranga")
                .license("Apache License Version 2.0")
                .licenseUrl("https://github.com/springfox/springfox/blob/master/LICENSE").version("2.0").build();
    }
}