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?
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
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