Solución:
Siempre que haya copiado correctamente los archivos de https://github.com/wordnik/swagger-ui a su proyecto (directorio dist
debe ser copiado a su src/main/webapp
), luego puede acceder a la documentación de la API en http://.../MyService/index.html
. No olvides modificar index.html
para que Swagger sepa dónde cargar los documentos de la API:
window.swaggerUi = new SwaggerUi({
url: "http://localhost:8080/MyService/rest/api-docs",
La ruta base de la API en su web.xml
debe establecerse en http://.../MyService/rest
si rest
es la ruta de la aplicación que ha definido en su implementación de clase javax.ws.rs.core.Application
usando la anotación @ApplicationPath
.
Aquí hay un ejemplo de lo que suelo hacer (no uso web.xml
para configuración):
@ApplicationPath( "api" )
public class MyRestApplication extends Application
@Override
public Set> getClasses( )
Set> resources = new HashSet>( );
resources.add( ApiListingResource.class );
resources.add( ApiDeclarationProvider.class );
resources.add( ApiListingResourceJSON.class );
resources.add( ResourceListingProvider.class );
resources.add( Ping.class ); // my own resource class
swaggerConfiguration( );
return resources;
private void swaggerConfiguration( )
SwaggerConfig swaggerConfig = new SwaggerConfig( );
ConfigFactory.setConfig( swaggerConfig );
swaggerConfig.setApiVersion( "0.0.1" );
swaggerConfig.setBasePath( "http://localhost:8080/MyService/api" );
ScannerFactory.setScanner( new DefaultJaxrsScanner( ) );
ClassReaders.setReader( new DefaultJaxrsApiReader( ) );
Aquí está el ejemplo más simple usando spring, tomcat, jersey, maven, swagger. A continuación se muestra la estructura del proyecto.
Código para HelloWorldService.
package com.rest;
import com.wordnik.swagger.annotations.Api;
import com.wordnik.swagger.annotations.ApiOperation;
import com.wordnik.swagger.annotations.ApiResponse;
import com.wordnik.swagger.annotations.ApiResponses;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
/**
* Created by neerbans on 11/3/2016.
*/
@Path("/hello")
@Api( value = "/hello", description = "print hello world")
public class HelloWorldService
@ApiOperation(
value = "method api",
notes = "method api notes"
)
@ApiResponses(value =
@ApiResponse(code = 200, message = "success"),
@ApiResponse(code = 500, message = "error")
)
@Produces(MediaType.TEXT_PLAIN)
@GET
@Path("/param")
public String getMsg(
@PathParam("param")
String msg
)
String output = "Jersey say : " + msg;
return output;
SwaggerApp.class
package com.rest;
import com.wordnik.swagger.config.ConfigFactory;
import com.wordnik.swagger.config.ScannerFactory;
import com.wordnik.swagger.config.SwaggerConfig;
import com.wordnik.swagger.jaxrs.config.ReflectiveJaxrsScanner;
import com.wordnik.swagger.jaxrs.listing.ApiDeclarationProvider;
import com.wordnik.swagger.jaxrs.listing.ApiListingResource;
import com.wordnik.swagger.jaxrs.listing.ApiListingResourceJSON;
import com.wordnik.swagger.jaxrs.listing.ResourceListingProvider;
import com.wordnik.swagger.jaxrs.reader.DefaultJaxrsApiReader;
import com.wordnik.swagger.reader.ClassReaders;
import org.glassfish.jersey.message.MessageProperties;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.server.ServerProperties;
import javax.annotation.PostConstruct;
/**
* Created by neerbans on 11/3/2016.
*/
public class SwaggerApp extends ResourceConfig
public SwaggerApp()
register(HelloWorldService.class);
register(ApiListingResource.class);
register(ApiDeclarationProvider.class);
register(ApiListingResourceJSON.class);
register(ResourceListingProvider.class);
property(MessageProperties.XML_FORMAT_OUTPUT, true);
property(ServerProperties.TRACING, "ALL");
@PostConstruct
public void initializeSwaggerConfiguration()
final ReflectiveJaxrsScanner scanner = new ReflectiveJaxrsScanner();
scanner.setResourcePackage("com.rest");
ScannerFactory.setScanner(scanner);
ClassReaders.setReader(new DefaultJaxrsApiReader());
final SwaggerConfig config = ConfigFactory.config();
config.setApiVersion("1.0");
config.setBasePath("http://localhost:8080/jax-rs/rest");
applicationContext.xml
Web.xml
Archetype Created Web Application
contextConfigLocation
classpath:applicationContext.xml
org.springframework.web.context.ContextLoaderListener
org.springframework.web.context.request.RequestContextListener
Jersey Web Application
org.glassfish.jersey.servlet.ServletContainer
javax.ws.rs.Application
com.rest.SwaggerApp
1
Jersey Web Application
/rest/*
pom.xml
nb
com.edifecs
1.0-SNAPSHOT
4.0.0
jax-rs
war
jax-rs Maven Webapp
http://maven.apache.org
junit
junit
3.8.1
test
org.glassfish.jersey.containers
jersey-container-servlet
2.22.2
com.wordnik
swagger-jaxrs_2.10
1.3.12
org.springframework
spring-web
4.1.4.RELEASE
jax-rs
Después de configurar el proyecto. Constrúyalo e implemente el archivo war en la carpeta de aplicaciones web de Tomcat.
Ejecute Tomcat y presione las siguientes URL:
http: // localhost: 8080 / jax-rs / rest / api-docs
Para swagger-ui
http: // localhost: 8080 / jax-rs
los swagger.api.basepath
el parámetro es no donde su instalación Swagger mantiene el index.html
. Es un parámetro que usa Swagger para ofrecerle la capacidad de llamar a sus puntos finales REST a través de la interfaz de usuario de Swagger, por lo que se representa en los enlaces que usa Swagger.
Descarga la interfaz de usuario de Swagger y la coloca en su WebContent
carpeta. A continuación, puede cargar la interfaz de usuario de Swagger en http://localhost:8080/swagger/
.
los web.xml
debería verse así:
jersey-servlet
org.glassfish.jersey.servlet.ServletContainer
javax.ws.rs.Application
### Your Application or ResourceConfig ###
jersey.config.server.provider.packages
io.swagger.jaxrs.listing,
### com.your.rest.package ###
1
jersey-servlet
/rest/*
...
JerseyJaxrsConfig
io.swagger.jersey.config.JerseyJaxrsConfig
api.version
1.0.0
swagger.api.basepath
/MyService/rest
scan.all.resources
true
2
Aquí puedes ver las comentarios y valoraciones de los usuarios
Puedes reafirmar nuestra ocupación escribiendo un comentario o dejando una puntuación te damos la bienvenida.