使用swagger-jaxrs2和openapi-configuration.yaml文件在Swagger 2.x中设置basePath

时间:2019-06-12 11:57:16

标签: java jax-rs wildfly swagger-2.0

如何在Swagger 2.x中设置基本路径?

该应用程序是针对JaxRS和Wildfly构建的。 Swagger是使用swagger-jaxrs2的自动配置和openapi-configuration.yaml文件配置的。

我可以打开swagger-ui并浏览api文档,但是当我想“尝试一下”时,由于缺少jboss上下文根,因此请求不会到达正确的url。如何将此上下文根添加到生成的openapi.json?

我阅读了文档,我可以扩展Application并以编程方式配置swagger,但如果配置可以保留在maven中,我希望这样做。这是一个多模块项目,因此我想避免重复的代码,并使新模块的设置过程保持简单。这可能吗?

pom.xml:

<dependency>
  <groupId>io.swagger.core.v3</groupId>
  <artifactId>swagger-jaxrs2</artifactId>
</dependency>
<dependency>
  <groupId>io.swagger.core.v3</groupId>
  <artifactId>swagger-jaxrs2-servlet-initializer</artifactId>
</dependency>

jboss-web.xml

<jboss-web xmlns="http://www.jboss.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss-web_5_1.xsd">
<context-root>/app-root</context-root>
</jboss-web>

web.xml

<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
    <servlet-mapping>
        <servlet-name>javax.ws.rs.core.Application</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>

openapi-configuration.yaml(使用Maven资源过滤):

resourcePackages:
  - ${project.groupId}
prettyPrint: true
cacheTTL: 0
openAPI:
  info:
    version: ${project.version}
    title: ${project.name}
    description: ${project.description}
    contact:
      email: contact@email.com

1 个答案:

答案 0 :(得分:0)

您可以将服务器位置添加到openapi.yaml。它必须看起来像这样:

openapi: 3.0.1
info:
  version: ${project.version}
  title: ${project.name}
servers:
  url: /app-root
paths:

服务器网址可以替换为由maven填充的变量。