gpt4 book ai didi

java - 没有出现在 Jersey 2 上使用 swagger 和 grizzly 的列表

转载 作者:行者123 更新时间:2023-12-02 13:15:33 27 4
gpt4 key购买 nike

我在 jersey 2 和 grizzly 上设置了 swagger(没有 web.xml)。我可以访问 swagger 页面,但是我的 API 资源没有出现。 Swagger page i'm referring to is seen below

我的主文件如下所示

`    
package com.beraben.jersey.test;

import com.wordnik.swagger.jaxrs.config.BeanConfig;
import java.net.URI;
import org.glassfish.grizzly.http.server.CLStaticHttpHandler;
import org.glassfish.grizzly.http.server.HttpServer;
import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory;
import org.glassfish.jersey.server.ResourceConfig;

/**
*
* @author Evan
*/
public class jerseyTestMain {

/**
* @param args the command line arguments
*/
public static final String BASE_URI = "http://localhost:8080/myapp/";

public static HttpServer startServer() {
// create a resource config that scans for JAX-RS resources and providers
// in com.example.rest package
final ResourceConfig rc = new ResourceConfig().packages("com.beraben.jersey.test", "com.wordnik.swagger.jersey.listing");

BeanConfig config = new BeanConfig();
config.setResourcePackage("com.beraben.jersey.test");
config.setVersion("1.0.0");
config.setScan(true);

// create and start a new instance of grizzly http server
// exposing the Jersey application at BASE_URI
return GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), rc);
}

public static void main(String[] args) throws InterruptedException {
final HttpServer server = startServer();

CLStaticHttpHandler staticHttpHandler = new CLStaticHttpHandler(jerseyTestMain.class.getClassLoader(), "swagger-ui/");
server.getServerConfiguration().addHttpHandler(staticHttpHandler, "/docs");

Object syncObj = new Object();
synchronized (syncObj) {
syncObj.wait();
}

}

}
`

我还有一个 API 设置,如下所示

   package com.beraben.jersey.test;

import com.wordnik.swagger.annotations.Api;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

/**
*
* @author Evan
*/
@Path("myresource")
@Api(value = "/myresource")
public class MyResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getIt(){
return "Got it!";
}
}

我使用它正确返回的 API 没有问题。

但由于某种原因,我无法大肆展示有关 API 调用的详细信息,我是否需要做更多的事情才能让它在我的代码中显示有关现有 API 的详细信息?

我的静态文件是从示例项目复制的 jersey2-grizzly2-swagger-demo

另外,作为引用,这是我的 pom 文件(与演示项目没有什么区别,我不使用 dependencyManagment 来获取 jersey-bom,而是直接引用它)。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.beraben</groupId>
<artifactId>jersey-test</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>

<dependencies>
<dependency>
<groupId>org.glassfish.jersey.archetypes</groupId>
<artifactId>jersey-quickstart-grizzly2</artifactId>
<version>2.22.2</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey</groupId>
<artifactId>jersey-bom</artifactId>
<version>2.22.2</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-grizzly2-http</artifactId>
<version>2.22.2</version>
</dependency>
<dependency>
<groupId>com.wordnik</groupId>
<artifactId>swagger-jersey-jaxrs_2.10</artifactId>
<version>1.3.13</version>
</dependency>
</dependencies>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
</project>

最佳答案

查看谷歌表单后,发现独立版本的 swagger 实际上不起作用。

我创建了一个单独的 Maven Web 应用程序,并将我的 Jersey 项目添加为依赖项。在摆弄了与我正在使用的 Jersey 版本相匹配的 Swagger 版本后,这成功了。

关于java - 没有出现在 Jersey 2 上使用 swagger 和 grizzly 的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43781118/

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