gpt4 book ai didi

java - 使用 Application 子类时,Swagger 不显示 Jersey 的 @Api 注释

转载 作者:行者123 更新时间:2023-11-30 03:16:28 25 4
gpt4 key购买 nike

我正在尝试使用 swagger 记录我的 Jersey REST API,但我无法设法让它记录任何方法或 API。当我访问 host/api/swagger.json 时,我可以获得在 MainAPI 中设置的属性,仅此而已。我有 1 个名为 MainAPI 的主应用程序子类,如下所示:

ApplicationPath("api")
public class MainAPI extends Application{

public MainAPI(){
BeanConfig beanConfig = new BeanConfig();
beanConfig.setVersion("1.0.2");
beanConfig.setBasePath("api");
beanConfig.setResourcePackage("io.swagger.resources");
beanConfig.setScan(true);
}


@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> resources = new HashSet();

resources.add(FirstAPI.class);
resources.add(SecondAPI.class);

resources.add(io.swagger.jaxrs.listing.ApiListingResource.class);
resources.add(io.swagger.jaxrs.listing.SwaggerSerializers.class);

return resources;
}
}

然后我有另一个类,它定义了一些 api 功能,称为 FirstAPI。代码如下所示:

@Path("login")
@Api(value="user", description = "Login and check login status")
public class FirstAPI extends MainAPI {

@GET
@ApiOperation(value = "Test method",
notes = "This is test method")
@Path("test")
public Response testMethod() {

return Response.status(200).entity("Hello Martians!").build();
}

@GET
@ApiOperation(value = "Check if any user is loggedin",
notes = "If an user is loggedin the username will be returned",
response = Response.class)
// @Path("/login")
public Response checkLogin(@Context HttpServletRequest request) {
JSONObject myJson = new JSONObject();
if (true) {
myJson.put("loggedin", "true");
myJson.put("user", "John Doe");
return Response.status(200).entity(myJson.toString()).build();
} else {
myJson.put("loggedin", "false");
return Response.status(200).entity(myJson.toString()).build();
}
}
}

我在 Tomcat 7 上使用 jersey 1.13 运行此程序。

最佳答案

在您的 Swagger 配置(json、xml 或通过代码)中的某个位置应该有一个资源包。您需要将带注释的类的包添加到其中,以便 swagger 会自动拾取它们。类似的东西

 beanConfig.setResourcePackage("my.package.is.the.best"); 

关于java - 使用 Application 子类时,Swagger 不显示 Jersey 的 @Api 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32440905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com