如何在 OpenApi 中添加基本路径以便使用 Maven 自动生成?

How to add basepath in OpenApi so that it is autogenerated with maven?

我有一个 springboot 项目,在该项目中,我使用 yml 格式的 OpenApi 开发了一个 api,并使用 openapi-generator-maven-plugin 自动生成了 类。 yml如下:

openapi: 3.0.2
info:
  version: 0.0.1-SNAPSHOT
  title: Example API
servers:
  - description: Localhost
    url: 'http://localhost:{port}/my-first-api'
    variables:
      port:
        default: '8080'

tags:
  - name: Example

paths:
  /api/v1/examples:
    get:
      summary: Get examples
      operationId: getExamples
      description: Obtain a list of available examples.
      tags:
        - Example
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Example'

components:
  schemas:
    Example:
      title: Example
      type: object
      properties:
        description:
          type: string
        check:
          type: boolean
      example:
        description: 'Example'
        check: true

如您所见,我定义了本地基本路径为:

http://localhost:8080/my-first-api

稍后添加的唯一可用端点:

/api/v1/examples

因此,我预计一旦工件在本地启动,我就可以使用来自此 URL:

的端点

http://localhost:8080/my-first-api/api/v1/examples

但令我惊讶的是它不起作用,这个URL没有找到。但如果它发现以下内容:

http://localhost:8080/api/v1/examples

如您所见,它在没有路径的“my-first-api”部分的情况下进行访问,但我也需要路径的这一部分...可能会发生什么?

谢谢!

在我的测试中,它工作得很好。 my-path 部分已更改,与规范更改相匹配。

@RequestMapping("${project.name.base-path:/my-path}")

但是如您所见,spring 允许您使用 project.name.base-path 属性 覆盖此基础 URL。 (实际的 属性 名称可能与您不同)

所以,我的建议是:

  1. 检查生成的控制器上的注释是否完全改变。
  2. 如果是,请检查 属性 是否在某个时候被覆盖。
  3. 检查您是否将 spring 自己的基础 URL 设置为 属性 server.servlet.context-path