2017-04-19 2 views
0

Ich habe eine API in Java SpringBoot und ich möchte es in Swagger dokumentieren.Swagger zeigt keine Informationen über Methoden - SpringBoot

ich getan habe die folgenden (I enthalten nur Klassen, die einen Code im Zusammenhang mit Swagger enthalten):

Hauptklasse

@EnableSwagger2 
public class ProvisioningApiApplication { 
public static void main(String[] args) { 
    if (AuthConfigFactory.getFactory() == null) { 
     AuthConfigFactory.setFactory(new AuthConfigFactoryImpl()); 
    } 
    SpringApplication.run(ProvisioningApiApplication.class, args); 
} 

@Bean 
public Docket swaggerSpringMvcPluggin() { 
    return new Docket(DocumentationType.SWAGGER_2) 
      .useDefaultResponseMessages(false) 
      .apiInfo(apiInfo()) 
      .select() 
      .paths(Predicates.not(PathSelectors.regex("/error.*"))) 
      .build(); 
} 

@Component 
@Primary 
public class CustomObjectMapper extends ObjectMapper { 
    public CustomObjectMapper() { 
     setSerializationInclusion(JsonInclude.Include.NON_NULL); 
     configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); 
     configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); 
     configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); 
     enable(SerializationFeature.INDENT_OUTPUT); 
    } 
} 

private ApiInfo apiInfo() { 
    return new ApiInfoBuilder() 
      .title("Provisioning API") 
      .version("0.0.1") 
      .build(); 
} 
} 

-Controller

@RestController 
@EnableAutoConfiguration 
@CrossOrigin 
public class RecursoController { 

@Autowired 
private Configuration configuration; 
@Autowired 
private TypeSpecService typeSpecService; 
@Autowired 
private IoTAgentService ioTAgentService; 
@Autowired 
private OrionService orionService; 
@Autowired 
private DeviceIdService deviceIdService; 

@ApiOperation(value = "Put a device", nickname = "provisionDevice", tags = "Device") 
@ApiResponses({ 
     @ApiResponse(code = 200, message = "Ok", response = NewDeviceResponse.class) 
}) 
@RequestMapping(method = RequestMethod.PUT, value = "/devices", consumes = "application/json", produces = "application/json") 
public ResponseEntity<NewDeviceResponse> provisionDevice(@RequestBody NewDeviceRequest newDeviceRequest, 
                 @RequestHeader("X-Auth-Token") String oAuthToken) { 
    // what my method does 
} 

Die Dokumentation Ergebnisse in der folgenden swagger.json Datei:

{ 
    swagger: "2.0", 
    info: { 
     version: "0.0.1", 
     title: "Provisioning API" 
    }, 
    host: "localhost:8080", 
    basePath: "/" 
} 

Wie Sie sehen können, enthält es nur den Namen und die Version der API, aber nicht die provisionDevice Methode.

Ich habe alles versucht, aber ich kann es nicht herausfinden, was ich schlecht mache. Was vermisse ich?

+0

Haben Sie versucht, Apis() zu 'APISelectorBuilder' hinzuzufügen.' Return new Docket (DocumentationType.SWAGGER_2) ... .select() Apis ("packagetoscan") .paths (Predicates.not (PathSelectors .regex ("/ error. *"))) .build(); ' – jny

+0

Ja, ich habe es @jny versucht, aber es funktioniert nicht. Die 'swagger.json'-Ausgabe wird fortgesetzt, wie ich in meiner Frage geschrieben habe. Irgendeine andere Idee? – gobaldia

Antwort

0

Haben Sie @Api Annotation in Ihrer Klasse hinzugefügt, wo Sie Ihre Hauptdienste haben?

Verwandte Themen