我有一个jax-rs spring rest web app,我想在其中添加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 bean:
<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
的工作原理。只是新添加的招摇不是。
答案 0 :(得分:0)
如果您正在使用Application
类而不是Spring的扫描,那么您很可能会在该类中指定您的资源,这就是为什么bean定义无法获取的原因。尝试将io.swagger.jaxrs.listing.ApiListingResource
和io.swagger.jaxrs.listing.SwaggerSerializers
作为资源添加到Application
类。