Je suis le guide de mise à niveau de 1.3.12 à 1.5.6 ainsi que le guide de configuration du projet Jersey 2.X. Je rencontre un problème avec la sous-classe « Application personnalisée », qui fournit l'exemple de code ci-dessous :
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;
}
}
Notre projet s'écarte de l'exemple que vous fournissez car il étend une classe Jersey ResourceConfig
plutôt qu'une Application
directement. Le problème est que la classe ResourceConfig
elle-même remplace la méthode getClasses()
et la déclare finale.
Connaissez-vous un moyen de contourner cette restriction, soit en ajoutant les ressources nécessaires à une autre partie de l'application du maillot, soit en utilisant d'autres moyens de cajoler le fanfaron ? Les ajouter via la méthode d'assistance ResourceConfig.register()
rend le fichier swagger.json
disponible au chemin habituel, mais ne le remplit pas avec la documentation des classes de point de terminaison qui ont été annotées avec @Api
et sont également registered()
(et fonctionnaient avant la mise à niveau). Je ne veux pas emprunter la voie du servlet ou du filtre web.xml.
Le swagger.json généré ne contient que les éléments supplémentaires que j'ai définis dans le nouveau BeanConfig, comme ceci :
// http://localhost:8080/v1.0/swagger.json
{
"swagger": "2.0",
"info": {
"description": "Description of my App.",
"version": "1.0",
"title": "MyApp"
},
"basePath": "/v1.0"
}
Merci de votre aide.
Tant que vous ajoutez les ressources, tout va bien. Utiliser ResourceConfig.register()
est une bonne solution. Vous ne le voyez pas être rempli, car vous n'avez pas terminé la dernière étape du guide - https://github.com/swagger-api/swagger-core/wiki/Swagger-Core-Jersey-2.X-Project -Setup-1.5#3 -configurer-et-initialiser-swagger.
La dernière étape à laquelle vous faites référence, est-ce le getClasses()
que je mentionne ? Ou les bits BeanConfig
? Pour le BeanConfig
j'ai ce qui suit :
<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);
}
La seule chose qui me manquait dans l'exemple était le setResourcePackage
– j'essaierai ça demain. Les bits d'hôte et de schéma sont une option, n'est-ce pas ? Je me souviens avoir lu ça quelque part...
host
et schema
sont facultatifs, oui.
Sans setResroucePackage
, vous obtiendrez une sortie vide ouais, comme vous pouvez le voir ;)
Commentaire le plus utile
host
etschema
sont facultatifs, oui.Sans
setResroucePackage
, vous obtiendrez une sortie vide ouais, comme vous pouvez le voir ;)