2016-08-09 125 views
0

Ich versuche, eine Dokumentation meiner API mit Swagger zu machen.Swagger für den Frühling: Keine Zuordnung gefunden

Mein REST-API mit Hilfe der Feder geschrieben und typisch-Controller wie folgt aussieht:

@Controller 
@RequestMapping("/mymapping") 
public class ParameterController { 

@Autowired 
Mydao myDao; 

    /** 
    * GET list 
    * 
    * @return The resulting string 
    */ 
    //produces replaced accept-header 
    @RequestMapping(value="/Parameter", method=RequestMethod.GET, produces={MediaType.APPLICATION_JSON_UTF8_VALUE, "application/ld+json"}) 
    public @ResponseBody List<String> getAllParameters() { 

    List<String> params= myDao.getAllParameters(); 
    return params; 
    } 

} 

die Swagger konfigurieren ich die Anweisung gefolgt here:

  1. ein Paket in Maven hinzugefügt
  2. erstellt eine Konfiguration Java-Klasse SwaggerConfig (Ich verwende nur Java-Konfiguration für Spring)
  3. hinzugefügt Resou rce Handlers an die bestehende Klasse WebMvcConfigurerAdapter
  4. hinzugefügt Pakete „io.swagger“ und „springfox.documentation“ auf die @ComponentScan Anmerkung der gleichen Klasse erstreckt WebMvcConfigurerAdapter

Aber jedes Mal, wenn ich http://localhost:8080/spring-security-rest/api/v2/api-docs nenne ich

erhalten
16:43:43,370 WARN qtp1072754634-13 servlet.PageNotFound:1136 - No mapping found for HTTP request with URI [/spring-security-rest/api/v2/api-docs] in DispatcherServlet with name 'org.springframework.web.servlet.DispatcherServlet-437a7f13' 

Das System sucht den Pfad /spring-security-rest/api/v2/api-docs unter den Zuordnungen der Controller. Und findet es nicht.

Was habe ich vergessen?

Vielen Dank im Voraus.

Antwort

0

meine SwaggerConfig Klasse sieht wie folgt aus:

@Configuration 
@EnableSwagger2 
public class SwaggerConfig { 

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

    @Bean 
    public UiConfiguration uiConfig() { 
     return UiConfiguration.DEFAULT; 
    } 

    private ApiInfo apiInfo() { 
     return new ApiInfoBuilder() 
       .title("title") 
       .description("description") 
       .version("0.1") 
       .build(); 
    } 

} 

und das ist, wie mein WebMvcConfigurerAdapter.addResourceHandlers aussieht:

@Configuration 
@EnableWebMvc 
@ComponentScan({ "com.something.server.controller" }) 
public class WebConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry 
       .addResourceHandler("/resources/**") 
       .addResourceLocations("/resources/"); 
     registry 
       .addResourceHandler("swagger-ui.html") 
       .addResourceLocations("classpath:/META-INF/resources/"); 
     registry 
       .addResourceHandler("/webjars/**") 
       .addResourceLocations("classpath:/META-INF/resources/webjars/"); 
    } 

    @Bean 
    public InternalResourceViewResolver viewResolver() { 
     InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); 
     viewResolver.setViewClass(JstlView.class); 
     viewResolver.setPrefix("/WEB-INF/views/jsp/"); 
     viewResolver.setSuffix(".jsp"); 
     return viewResolver; 
    } 

} 
+0

ist dies WebMvcConfigurerAdapter konfiguriert speziell für Prahlerei oder es funktioniert auch für die Controller? – user2957954

+0

für beide, aktualisiert mit komplettem Code –

+0

jetzt sehen meine Klassen wie deins aus. Aber es sucht immer noch nach den/spring-security-rest/api/v2/api-docs unter den Controller-Mappings – user2957954