我找到了招摇和摇摆的ui,我喜欢这种方法 . 我已经设法让它至少在Spring启动时工作 . 现在我想将swagger集成到在wildfly 9上运行的Java EE应用程序中 . 不幸的是,这根本不起作用 . Swagger记载的确很差 .
有什么必要让它工作?我按照https://github.com/swagger-api/swagger-core/wiki/Swagger-Core-JAX-RS-Project-Setup-1.5.X的官方招摇文件的说明进行了操作 .
这是我在build.gradle中的swagger依赖:
compile 'io.swagger:swagger-jaxrs:1.5.4'
这是我的JAX-RS应用程序类:
public class SmamblRestApiApplication extends Application {
private Set<Class<?>> classes = new HashSet<>();
public SmamblRestApiApplication() {
initClasses();
}
private void initSwagger() {
BeanConfig beanConfig = new BeanConfig();
beanConfig.setTitle("SmamblV1");
beanConfig.setVersion("1.0");
beanConfig.setSchemes(new String[]{"http"});
beanConfig.setHost("localhost:8080");
beanConfig.setBasePath("/rest/v1");
beanConfig.setResourcePackage("com.myapp.api.v1.rest");
beanConfig.setScan(true);
}
private void initClasses() {
//--- Api Endpoints --------------------------------------
classes.add(RegistrationApi.class);
classes.add(MigrationApi.class);
classes.add(PhoneNumberApi.class);
classes.add(UserResourceApi.class);
classes.add(MonitoringApi.class);
classes.add(PingApi.class);
classes.add(PublicUserResource.class);
//--- Filters --------------------------------------------
classes.add(ApiExceptionMapper.class);
classes.add(SecurityRolesFilter.class);
//--- Swagger --------------------------------------------
classes.add(ApiListingResource.class);
classes.add(SwaggerSerializers.class);
}
@Override
public Set<Class<?>> getClasses() {
return classes;
}
}
我甚至用一个swagger注释注释了一个方法:
@Path("private/user")
@RolesAllowed({UserRole.USER})
@NoCache
@Api
public class UserResourceApi {
@Inject
UserFacade userFacade;
@RolesAllowed(UserRole.ADMIN)
@Produces(MediaType.APPLICATION_JSON)
@GET
@ApiOperation("test")
public List<UserResource> getAllUsers() {
return userFacade.findAllUsers();
}
// ...
当试图到达上面文档中描述的swagger.json时,会返回一个空文件(没有404或s.th.,所以我相信某些东西正在工作,但不输出任何东西) . 我能做什么?
顺便说一句 . 谁能解释一下com.wordnik和io.swagger包之间的区别?
1 回答
我认为你的代码应该没问题(我有一个类似的配置使用WildFly) . 但是,我没有看到代码中调用的
initSwagger
方法 . 也许问题只是该方法没有被调用 .