【发布时间】:2016-04-21 02:28:04
【问题描述】:
实际上,我正在尝试为我的 REST 服务生成 swagger.json。 我使用 jersy 成功了,但现在我们在服务中使用不使用 jersy,我们只使用 Jax-rs,所以现在我无法生成它并得到 404 错误代码。
这是我的 pom 依赖项
<dependencies>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-jaxrs</artifactId>
<version>1.5.6</version>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>jsr311-api</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.9.5</version>
</dependency>
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>0.9.10</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
</dependencies>
这是我的应用配置应用程序
import java.util.HashSet;
import java.util.Set;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
import com.skios.endpoint.EmployeeEndpoint;
import com.skios.endpoint.ShopsEndpoint;
import io.swagger.jaxrs.config.BeanConfig;
import io.swagger.jaxrs.listing.ApiListingResource;
import io.swagger.jaxrs.listing.SwaggerSerializers;
@ApplicationPath("api")
public class AppConfiguration extends Application {
public AppConfiguration() {
BeanConfig beanConfig = new BeanConfig();
beanConfig.setVersion("1.0.2");
beanConfig.setSchemes(new String[] { "http" });
beanConfig.setHost("localhost:7070");
beanConfig.setBasePath("app");
beanConfig.setResourcePackage("com.skios.endpoint");
beanConfig.setScan(true);
}
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> resources = new HashSet();
resources.add(ShopsEndpoint.class);
resources.add(EmployeeEndpoint.class);
// ...
resources.add(ApiListingResource.class);
resources.add(SwaggerSerializers.class);
return resources;
}
}
这些是我的终点
@Api(value = "/employees", description = "Endpoint for employee listing")
@Path("/employees")
public class EmployeeEndpoint {}
@Path("/shops")
@Api(value="/shops", description="Shops")
public class ShopsEndpoint {}
现在当我尝试输入 swagger.json 文件的路径时
http://localhost:7070/MavenSwaggerTest/api/swagger.json
i got 404 error code.
那么问题是什么?谁能帮我? 谢谢
【问题讨论】:
-
您是否在日志中看到任何其他错误(在启动时)?您能否提供一个用于访问 API 的示例 URL(我假设您可以成功地做到这一点)?
-
@Ron: 非常感谢您的回复,但实际上我在控制台中没有任何错误,我正在通过 Tomcat v8 进行测试,这也是我的项目>>drive.google.com/open?id=0B1u4YdligQ8YYllFUGVCbm5seHM 请检查它
-
这并不是说 swagger.json 不可访问,而是您的 API 中的任何内容都不可访问 - 甚至您的商店资源也不可访问。 JAX-RS 只是一个规范和一组接口。你可以写一些通用的东西,但你需要把它挂在一个实现上。 swagger-jaxrs 将引入旧版本的球衣,但这还不够。您的第一步是修复应用程序以使其正常工作。
-
@Ron:感谢您的关注,实际上我删除了所有依赖项,但只保留了 >> io.swagger swagger-jaxrs 版本 1.5.6 并将 Emplyee 和 shop 类添加到资源中,然后通过 wildfly 运行项目版本 9x 而不是 Tomcat 服务器,我让它运行没有问题,我在运行时也得到了 swagger.json 文件,再次非常感谢你
-
@ Supun Wijerathne 实际上你的回答对我没有帮助,因为问题出在项目本身而不是这个配置,但总的来说我只使用 io.swagger 依赖并忽略其他依赖。顺便说一句,感谢您的回答,但我无法将其标记为我的问题的正确答案
标签: jax-rs swagger swagger-ui swagger-2.0