如何在 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。 (实际的 属性 名称可能与您不同)
所以,我的建议是:
- 检查生成的控制器上的注释是否完全改变。
- 如果是,请检查 属性 是否在某个时候被覆盖。
- 检查您是否将 spring 自己的基础 URL 设置为 属性
server.servlet.context-path
我有一个 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。 (实际的 属性 名称可能与您不同)
所以,我的建议是:
- 检查生成的控制器上的注释是否完全改变。
- 如果是,请检查 属性 是否在某个时候被覆盖。
- 检查您是否将 spring 自己的基础 URL 设置为 属性
server.servlet.context-path