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

标签 java jax-rs wildfly swagger-2.0

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

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

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

我在文档中读到,我可以通过编程方式扩展应用程序并配置 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

最佳答案

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

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

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

关于java - 使用 swagger-jaxrs2 和 openapi-configuration.yaml 文件在 Swagger 2.x 中设置 basePath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56561709/

相关文章:

java - 使用增量运算符进行计算

java - 以安全模式访问应用程序时 Tomcat 5.5 服务器上的问题

java - 在 java simple JDBC 中主数据库关闭时切换到辅助 oracle 数据库

java - 需要使用拦截器将自定义 HTTP 请求 header 添加到 JAX-RS 客户端

rest - 如何在 Heroku 上使用 JAX-RS 找出传入的 RESTful 请求的 IP?

mysql - 使用 Wildfly 部署错误 servlet

java - 常量 java.lang.OutOfMemoryError : PermGen space Arquillian + Wildfly 8. 1

java - 通过 JSch 在 Java 上运行 Linux 命令

json - JAX-RS JAXB JSON 响应不起作用(MessageBodyProviderNotFoundException)

java - 在 wildfly-9.0.2.Final 中未找到类型为 'javax.sql.DataSource' 的接口(interface)的 EJB