2016-05-25 9 views
0

Ich versuche, swagger.json von meinen Java-Rest-Endpunkten zu generieren.Wie bekomme ich swagger json separat?

pom

<dependency> 
      <groupId>io.swagger</groupId> 
      <artifactId>swagger-jaxrs</artifactId> 
      <version>1.5.9</version> 
     </dependency> 

ApplicationPath

import javax.ws.rs.ApplicationPath; 

@ApplicationPath("/rest") 
public class RestApplication extends Application { 
    public RestApplication() { 
     BeanConfig beanConfig = new BeanConfig(); 
     //beanConfig.setVersion("1.0"); 
     beanConfig.setSchemes(new String[] { "http" }); 
     beanConfig.setTitle("My API"); 
     beanConfig.setBasePath("/rest"); 
     beanConfig.setResourcePackage("com.test.rest"); 
     beanConfig.setScan(true); 
    } 

    @Override 
    public Set<Class<?>> getClasses() { 
     HashSet<Class<?>> set = new HashSet<Class<?>>(); 

     set.add(com.test.AddressEndpoint.class); 
     set.add(com.test.ATGEndpoint.class); 
     set.add(com.test.CompanyEndpoint.class) 

     set.add(io.swagger.jaxrs.listing.ApiListingResource.class); 
     set.add(io.swagger.jaxrs.listing.SwaggerSerializers.class); 

     return set; 
    } 
} 

AddressEndpoint

@Api 
@Singleton 
@Path("/Addresss") 
@Produces("application/json") 
@ConcurrencyManagement 
@Lock(LockType.READ) 
public class AddressEndpoint { 

private static final Logger log = Logger.getLogger(AddressEndpoint.class.getName()); 

@Context 
private HttpRequest httpRequest; 

@Inject 
AddressService AddressService; 
/** 
* @description creates a new Address 
* @status 400 Address country cannot be null 
* @status 400 Address address2 cannot be null 
* @status 400 Address city cannot be null 
* @status 400 Address address1 cannot be null 
* @status 400 Address postcode cannot be null 
* @status 400 Address id cannot be null 
* @status 400 Address state cannot be null 
* @status 201 Address created successfully 
*/ 
@POST 
@Consumes("application/json") 
public Response create(Address entity) { 
    AddressService.insert(entity); 
    return Response.created(UriBuilder.fromResource(AddressEndpoint.class).path(String.valueOf(entity.getId())).build()).build(); 
} 

...

Wenn ich meine Testdbwar in Wildfly, bereitstellen, versuche ich auf meine JSON wie zugreifen; http://localhost:8080/testdbwar/rest/swagger.json?

und ich bekomme einen großen json, die alle jsons enthält.

  1. Wie kann ich Json getrennt für jeden Endpunkt erhalten?
  2. Kann ich sie lokal in einem Dateisystem generieren lassen?
  3. Die große JSON-Datei lädt die Benutzeroberfläche sofort. Ich möchte separate Links für jeden Endpunkttyp haben.
+0

Was ist das Java-Framework, das Sie verwenden? Oder können Sie einen beliebigen Link posten, den Sie befolgen, um Swagger zu konfigurieren? –

+0

@SupunWijerathne io.swagger Bibliothek – Ratha

+0

Nein. Was ich fragte, war das Anwendungsframework, zB: Spring MVC, Play etc.? –

Antwort

0
  1. Allgemeinen für jede Prahlerei Bibliothek ist es all_resource_listing_url/pathName. Wenn ich nach jax-rs googelte, ist this eine, die ich etwas auf Ihr Problem bezogen fand, obwohl das mit wordnik.swagger Bibliothek war. In Ihrem Fall sollte es http://localhost:8080/testdbwar/rest/swagger.json/Addresss für apis unter Pfad 'Addresss' aufgeführt sein. Ich weiß nicht, ob du 'Addresses' mit 'sss' falsch geschrieben hast und schon mit 'ss' probiert hast. Und bitte versuchen Sie es auch mit einem Kleinbuchstaben Pfadnamen.
  2. Ich glaube nicht, dass es einen automatisierten Weg mit Swagger-Konfiguration selbst gibt. Aber Sie können das manuell mit einem kleinen Code tun? Anyway Es sieht so aus, dass diese Art von Unterstützung dort mit einigen kommerziellen Tools wie IBM verfügbar ist.
  3. Eine Lösung für Q1 ist auch auf diese Frage anwendbar, oder? Innerhalb des swagger-ui können Sie die swagger docdrls für jeden Pfad anders aufrufen.