2016-05-25 5 views
0

私はJava rest endpointからswagger.jsonを生成しようとしています。swagger jsonを個別に取得するにはどうすればいいですか?

ポンポン

<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(); 
} 

...

私はwildflyの私testdbwarを展開し、 私は私のようなJSONにアクセスしようとします。 http://localhost:8080/testdbwar/rest/swagger.json?

そして、私はすべてのjsonsを含む大きなjsonを取得します。

  1. エンドポイントごとにjsonを個別に取得するにはどうすればよいですか。
  2. これらをファイルシステムでローカルに生成できますか?
  3. 大きなjsonファイルはUIを一度に読み込みます。私は各エンドポイントの種類ごとに別々のリンクを持っていたいと思います。任意の闊歩ライブラリの一般
+0

使用しているJavaフレームワークとは何ですか?またはスワッガーを設定するために従った場合はリンクを投稿できますか? –

+0

@SupunWijerathne io.swagger library – Ratha

+0

いいえ、私は頼んだのは、アプリケーションフレームワーク、例:Spring MVC、Playなどでしたか? –

答えて

0
  1. 、それがall_resource_listing_url/pathNameです。私がjax-rsのためにgoogledしたとき、thisはwordnik.swaggerライブラリであったが、私はあなたの問題に関連していくらか見つかったものだ。あなたの場合、パス'Addresss'の下に掲載されているapisの場合は、http://localhost:8080/testdbwar/rest/swagger.json/Addresssである必要があります。あなたが 'sss'で 'Addresss'のスペルミスをしてしまったのか、すでに 'ss'で試したのかは分かりません。また、小文字のパス名で試してみてください。
  2. 奇妙な設定自体が自動化された方法はないと思います。しかし、小さなコードの権利で手動で行うことはできますか?とにかく、そのようなサポートは、IBMのような商用ツールで利用できるようです。
  3. Q1のソリューションもこのアプリケーションに適用できますか? swagger-uiの内部では、異なるパスごとに異なったdoc URLを呼び出すことができます。
関連する問題