2016-10-13 2 views
0

swagger2를 사용하여 Spring 부트 애플리케이션의 REST API 문서를 생성하려고합니다. Application.JavaSwagger2를 사용하여 스프링 부트 REST API 문서를 생성하는 방법은 무엇입니까?

다음
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.http.ResponseEntity; 
import springfox.documentation.builders.ApiInfoBuilder; 
import springfox.documentation.builders.RequestHandlerSelectors; 
import springfox.documentation.service.ApiInfo; 
import springfox.documentation.spi.DocumentationType; 
import springfox.documentation.spring.web.plugins.ApiSelectorBuilder; 
import springfox.documentation.spring.web.plugins.Docket; 
import springfox.documentation.swagger.web.UiConfiguration; 
import static springfox.documentation.builders.PathSelectors.*; 
@Configuration 
public class ApiDocumentationConfiguration { 
    @Bean 
    public Docket documentation() { 
    return new Docket(DocumentationType.SWAGGER_2) 
     .select() 
     .apis(RequestHandlerSelectors.any()) 
     //.paths(regex("/.*")) 
     .build() 
     .pathMapping("/") 
     .apiInfo(metadata()); 
    } 
    @Bean 
    public UiConfiguration uiConfig() { 
     return UiConfiguration.DEFAULT; 
    } 
    private ApiInfo metadata() { 
     return new ApiInfoBuilder() 
    .title("My awesome API") 
    .description("Some description") 
    .version("1.0") 
    .contact("[email protected]") 
    .build(); 
    } 
} 

은 다음과 같습니다 : 여기

server.port = ${port:8082} 
server.contextPath=/myServicePath 
spring.h2.console.enabled=true 
logging.level.org.hibernate.SQL=debug 
spring.datasource.url=jdbc:mysql://${mysql-host:localhost}:${mysql-port:3306}/${mysql-dbname:mydb} 
spring.datasource.username=${mysql-user:root} 
spring.datasource.password=${mysql-password:password} 
spring.datasource.driver-class-name=com.mysql.jdbc.Driver 

spring.jpa.hibernate.ddl-auto=update 
spring.jpa.show-sql=true 

내 swaggerConfig.Java입니다 : 여기

내 application.properties 파일의 내용이다

다음
import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Import; 
import springfox.documentation.swagger2.annotations.EnableSwagger2; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.RestController; 

@SpringBootApplication 
@ComponentScan 
@EnableSwagger2 
public class Application { 
    public static void main(String[] args) 
    { 
     SpringApplication.run(Application.class, args); 
    } 
} 

가 내 제어기 :

@Path("/") 
@Consumes(MediaType.APPLICATION_JSON) 
@Produces(MediaType.APPLICATION_JSON) 
@RestController 

public class MyController { 

    @Autowired 
    private HttpServletRequest request; 

    @ApiOperation(value = "doStuff", nickname = "doStuff", response = Response.class) 
    @RequestMapping(method = RequestMethod.GET, produces = "application/json") 
    public String doStuff(@RequestBody String command) { 
     return "TestString"; 
    }  
} 

스프링 부트 1.4.0 및 swagger2를 사용하고 있습니다. 나는 나의의 pom.xml에 의존성 아래에 추가 한 :

<dependency> 
    <groupId>io.springfox</groupId> 
    <artifactId>springfox-swagger2</artifactId> 
    <version>2.1.1</version>    
</dependency> 
<dependency> 
    <groupId>io.springfox</groupId> 
    <artifactId>springfox-swagger-ui</artifactId> 
    <version>2.1.1</version> 
</dependency> 

내가 URL을 http://localhost:8082/swagger-ui.html 사용 내가 오류 404

있어

사람이 파악하는 데 도움이 수 있습니까?

미리 감사드립니다.

+0

당신이 Path' @'사용하는 이유는 무엇입니까? –

+0

@ CássioMazzochiMolin application.properties에 contextPath를 정의했습니다. – Vishwas

+0

'@ Path'는 JAX-RS에서 온 것입니다. 그 주석으로 무엇을 달성하려고하는지 잘 모르겠습니다. 그런데 JAX-RS의'@ Produces'와'@ Consumes'도 있습니다. –

답변

0

리소스 처리기가 필요할 수 있습니다. 난 당신이 주석 @SpingBootApplication하기 전에 @Configuration 주석 클래스와 EnableSwagger2 @ 사용할 필요가 고려

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 

    registry.addResourceHandler("swagger-ui.html") 
      .addResourceLocations("classpath:/META-INF/resources/"); 

    registry.addResourceHandler("/webjars/**") 
      .addResourceLocations("classpath:/META-INF/resources/webjars/"); 
} 
+0

이 스 니펫을 어디에 추가해야합니까? – Vishwas

+0

@Vishwas'WebMvcConfigurerAdapter'를 확장하고'@ EnableWebMvc'으로 주석을 달아주는 클래스를 생성하십시오. –

+0

답장을 보내 주셔서 감사합니다. 이걸 시험해 볼께. – Vishwas

0

: 같은 것을 할 수있다. .paths를 추가 (PathSelectors.any()를) 시도이 가까이 article

을 보라 :

@Bean 
    public Docket api() { 
     return new Docket(DocumentationType.SWAGGER_2) 
      .select()         
      .apis(RequestHandlerSelectors.any())    
      .paths(PathSelectors.any())       
      .build();           
    } 
관련 문제