Ich befolge die Upgrade-Anleitung für 1.3.12 auf 1.5.6 zusammen mit der Jersey 2.X-Projekteinrichtungs-Anleitung . Ich habe ein Problem mit der Unterklasse 'Custom Application', die den folgenden Beispielcode bereitstellt:
public class SampleApplication extends Application {
<strong i="7">@Override</strong>
public Set<Class<?>> getClasses() {
Set<Class<?>> resources = new HashSet();
//resources.add(FirstResource.class);
//resources.add(SecondResource.class);
//...
resources.add(io.swagger.jaxrs.listing.ApiListingResource.class);
resources.add(io.swagger.jaxrs.listing.SwaggerSerializers.class);
return resources;
}
}
Unser Projekt weicht von dem von Ihnen bereitgestellten Beispiel ab, da es eine Jersey ResourceConfig
-Klasse erweitert und nicht direkt eine Application
-Klasse. Das Problem ist, dass die Klasse ResourceConfig
selbst die Methode getClasses()
überschreibt und sie als endgültig deklariert.
Kennen Sie eine Möglichkeit, diese Einschränkung zu umgehen, entweder durch Hinzufügen der erforderlichen Ressourcen zu einem anderen Teil der Trikot-Anwendung oder durch andere Mittel, um Prahlerei zu überreden? Das Hinzufügen über die ResourceConfig.register()
Hilfsmethode macht die swagger.json
Datei unter dem üblichen Pfad verfügbar, füllt sie jedoch nicht mit der Dokumentation für die Endpunktklassen, die mit @Api
annotiert wurden. registered()
(und funktionierten vor dem Upgrade). Ich möchte nicht den Weg des web.xml-Servlets oder -Filters gehen.
Die generierte swagger.json enthält nur die zusätzlichen Dinge, die ich in der neuen BeanConfig definiert habe, wie folgt:
// http://localhost:8080/v1.0/swagger.json
{
"swagger": "2.0",
"info": {
"description": "Description of my App.",
"version": "1.0",
"title": "MyApp"
},
"basePath": "/v1.0"
}
Danke für Ihre Hilfe.
Solange Sie die Ressourcen hinzufügen, ist es in Ordnung. Die Verwendung von ResourceConfig.register()
ist eine gute Lösung. Sie sehen es nicht ausgefüllt, weil Sie den letzten Schritt in der Anleitung nicht abgeschlossen haben - https://github.com/swagger-api/swagger-core/wiki/Swagger-Core-Jersey-2.X-Project -Setup-1.5#3 -Konfigurieren-und-Initialisieren-Swagger.
Der letzte Schritt, auf den Sie sich beziehen, ist das getClasses()
, das ich erwähne? Oder die BeanConfig
Bits? Für die BeanConfig
ich folgendes:
<strong i="9">@PostConstruct</strong>
/**
* Initializes Swagger Configuration
*/
public void initializeSwaggerConfiguration() {
final ReflectiveJaxrsScanner scanner = new ReflectiveJaxrsScanner();
scanner.setResourcePackage("com.my.project.api");
ScannerFactory.setScanner(scanner);
BeanConfig config = new BeanConfig();
config.setTitle("MyApp");
config.setDescription("Description of my App");
config.setVersion("1.0");
config.setBasePath("/v1.0");
config.setScan(true);
}
Das einzige, was mir im Beispiel gefehlt hat, waren die setResourcePackage
– das werde ich morgen versuchen. Die Host- und Schemabits sind eine Option, oder? Ich erinnere mich, das irgendwo gelesen zu haben...
host
und schema
sind optional, ja.
Ohne setResroucePackage
Sie eine leere Ausgabe, ja, genau wie Sie sehen können ;)
Hilfreichster Kommentar
host
undschema
sind optional, ja.Ohne
setResroucePackage
Sie eine leere Ausgabe, ja, genau wie Sie sehen können ;)