如何分开摇摆json?

时间:2016-05-25 04:42:32

标签: json rest jax-rs swagger swagger-2.0

我尝试从我的java rest端点生成swagger.json。

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

...

当我在wildfly中部署testdbwar时, 我尝试访问我的json; 的 http://localhost:8080/testdbwar/rest/swagger.json?

我得到一个包含所有jsons的大json。

  1. 如何为每个端点分别获取json?
  2. 我可以在文件系统中本地生成它们吗?
  3. 大json文件立即加载UI。我想为每种端点类型分别建立链接。

1 个答案:

答案 0 :(得分:0)

  1. 通常对于任何招摇图书馆,它都是all_resource_listing_url/pathName。当我用google搜索jax-rs时,this是我发现的与你的问题有些相关的问题,尽管那是wordnik.swagger库。在您的情况下,路径http://localhost:8080/testdbwar/rest/swagger.json/Addresss下列出的apis应为'Addresss'。我不知道你是否拼错了地址&#39;用&#39; sss&#39;并试过&#39; s&#39;已经。另请尝试使用小写路径名称。
  2. 我不认为这是一种自动摆弄配置的自动方式。但是您可以使用小代码手动执行此操作吗?无论如何看起来,那里有一些支持,有一些商业工具,如IBM
  3. Q1的解决方案也适用于此,对吧?在swagger-ui中,您可以针对每个不同的路径以不同的方式调用swagger doc url。