J'essaie de permettre à Swagger de générer automatiquement la documentation de mes API REST, mais je n'obtiens qu'un résultat partiel.Swagger ne génère pas la documentation REST
J'utilise Resteasy. J'ai ajouté la dépendance Swagger Maven
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-jaxrs</artifactId>
<version>1.5.3</version>
</dependency>
Je configuré mon objet Application
package com.myapp.init;
import java.util.HashSet;
import java.util.Set;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
import io.swagger.jaxrs.config.BeanConfig;
import io.swagger.jaxrs.listing.ApiListingResource;
import io.swagger.jaxrs.listing.SwaggerSerializers;
@ApplicationPath("/rest")
public class WebappInit extends Application {
public WebappInit() {
BeanConfig beanConfig = new BeanConfig();
beanConfig.setVersion("1.0.0");
beanConfig.setSchemes(new String[]{"http"});
beanConfig.setHost("theIP:8080");
beanConfig.setBasePath("/myapp/rest/");
beanConfig.setResourcePackage("the.resource.package");
beanConfig.setScan(true);
beanConfig.setPrettyPrint(true);
}
public Set<Class<?>> getClasses() {
Set<Class<?>> s = new HashSet<Class<?>>();
// here I add my REST WSs
s.add(ApiListingResource.class);
s.add(SwaggerSerializers.class);
return s;
}
}
J'exécuter l'application Web (sur un serveur wildfly 9) et aller à l'URL http://localhost:8080/myapp/rest/swagger.json
. Voilà ce que je reçois
{
swagger: "2.0",
info: {
version: "1.0.0"
},
host: "10.17.36.215:8080",
basePath: "/devops/rest/",
schemes: [
"http"
]
}
Il semble que Swagger ne peut pas construire la documentation REST, même si mes points d'extrémité REST sont accessibles et sont ajoutés à la liste de Swagger des ressources.
Quel peut être le problème?
Merci
Giulio
Mise à jour: J'ai vérifié que dans la méthode init Swagger BeanConfig.classes()
mes cours REST sont découverts correctement.
Qu'est-ce que vous attendez de voir dans votre fanfaronnades doc? Autant que je peux voir votre classe 'WebappInit' n'a aucune méthode marquée avec des annotations de JAXRS. – AlexR
Je m'attends à voir la liste de mes services REST avec les données utiles (méthodes HTTP, points de terminaison, corps de requête et de réponse) pour les utiliser. Que voulez-vous dire par "Dans la mesure où je peux voir votre classe WebappInit n'a aucune méthode marquée avec des annotations JAXRS"? Dans ma méthode WebappInit.getClasses(), j'ajoute la classe de services REST. Est-ce pas assez? – gvdm
Personnellement, je n'ai jamais vu une telle technique. Je crois que cela fonctionne pour vous, mais je ne comprends pas comment. Comment appelez-vous par exemple votre service 'ApiListingResource'? En utilisant une URL comme '/ rest/listing'? – AlexR