gpt4 book ai didi

java - 如何在 Java 中为 ReSTLet webservice 集成 Swagger-ui?

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

我想为我们的 reSTLet 网络服务实现 Swagger-ui。我可以遵循任何步骤将 swagger-ui 集成到我们的项目中吗?

我尝试了以下代码 -应用类

public class DemoApplication extends SwaggerApplication {

public Restlet createInboundRoot() {

Router baseRouter = new Router(getContext());
DemoResource demoRestlet = new DemoResource(
getContext());
demoRestlet.setApiInboundRoot(this);
attachSwaggerDocumentationRestlets(baseRouter, "/api-docs",
demoRestlet, "/api-docs/{demo}", demoRestlet);
return baseRouter;
}
}

资源类

public class DemoResource extends SwaggerSpecificationRestlet {

public DemoResource(Context context) {
super(context);
}

@Override
public Representation getApiDeclaration(String category) {
try {
ApiDeclaration apiDeclaration = new JacksonRepresentation<ApiDeclaration>(
super.getApiDeclaration(category), ApiDeclaration.class)
.getObject();
// manipulate the API declaration object as you wish
apiDeclaration.setBasePath("demo");
return new JacksonRepresentation<ApiDeclaration>(apiDeclaration);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}

web.xml

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>SimpleRestlet</display-name>

<!-- Application class name -->
<context-param>
<param-name>org.restlet.application</param-name>
<param-value>
deepu.example.DemoApplication
</param-value>
</context-param>

<!-- Restlet adapter -->
<servlet>
<servlet-name>RestletServlet</servlet-name>
<servlet-class>
org.restlet.ext.servlet.ServerServlet
</servlet-class>
</servlet>

<!-- Catch all requests -->
<servlet-mapping>
<servlet-name>RestletServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>

</web-app>

但是当我使用 Apapche-Tomcat 运行项目并点击 url

http://localhost:8080/SimpleRestlet/api-docs

它没有在浏览器中显示任何用户界面。我是否遗漏了什么或者我是否遵循了任何错误的步骤?

请帮助我为 reSTLet webservice 集成 Swagger-ui您的帮助更重要。

更新

我项目的目录树看起来像 -

enter image description here

最佳答案

您的项目已经将“/*”的内容映射到 JAX-RS Servlet。

克隆swagger-ui并将/dist 目录的内容复制到您的 WebContent 目录下的一个新目录中,例如/WebContent/ui。您可能希望更改 index.html 中 SwaggerUi 对象的 url 参数以指向您的文档,在您的情况下它将是 http://localhost:8080/SimpleReSTLet/api-文档

然后,在您的 web.xml 中添加以下内容以实现正确的路由:

<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/ui/*</url-pattern>
</servlet-mapping>

UI 将托管在您提供的目录的上下文根目录下。按照上面的示例,它将托管在 http://localhost:8080/SimpleReSTLet/ui 下。

关于java - 如何在 Java 中为 ReSTLet webservice 集成 Swagger-ui?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28577302/

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