2

我有一个 jax-rs spring rest web 应用程序,我想在其中添加 swagger doc。

在我的 web.xml 中,这已经为我现有的 REST API 定义了:

  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  <servlet>
    <servlet-name>com.bloom.rest.jaxrs.JaxrsApplication</servlet-name>
    <!-- Force immediate loading -->
    <load-on-startup>0</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>com.bloom.rest.jaxrs.JaxrsApplication</servlet-name>
    <url-pattern>/v1/*</url-pattern>
  </servlet-mapping>

我在我的 servlet 中添加了 Swagger 配置:JaxrsApplication

        BeanConfig beanConfig = new BeanConfig();
        beanConfig.setVersion("1.0.2");
        beanConfig.setSchemes(new String[]{"http"});
        beanConfig.setHost("localhost:8080");
        beanConfig.setBasePath("/v1");
        beanConfig.setResourcePackage("com.bloom.rest.endpoints");
        beanConfig.setScan(true);

我还在上下文 xml 文件中添加了 swagger beans:

<bean id="apiListingResource" class="io.swagger.jaxrs.listing.ApiListingResource" />
    <bean id="swaggerSerializers" class="io.swagger.jaxrs.listing.SwaggerSerializers"
        scope="singleton" />

似乎我的资源扫描工作正常:

 INFO  AutowiredAnnotationBeanPostProcessor - JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
 INFO  JestClientFactory - Node Discovery Disabled...
 INFO  ContextLoader - Root WebApplicationContext: initialization completed in 7821 ms
 INFO  Reflections - Reflections took 84 ms to scan 1 urls, producing 66 keys and 276 values

http://localhost:8080/v1/swagger.json不起作用(给出 404)。

我已经尝试了很多案例(在 swagger conf 中使用 v1,没有等),但是缺少一些东西。你有什么想法吗?

我现有的api是这样的:

http://localhost:8080/v1/users/34

作品。只是新加入的招摇不。

4

1 回答 1

0

如果您使用的是一个Application类而不是 Spring 的扫描,那么您很可能在该类中指定您的资源,这就是 bean 定义没有被拾取的原因。尝试将io.swagger.jaxrs.listing.ApiListingResourceio.swagger.jaxrs.listing.SwaggerSerializers作为资源添加到您的Application课程中。

于 2015-08-17T21:01:06.730 回答