OpenAPI 生成器可分页 Spring
OpenAPI Generator Pageable with Spring
我希望 OpenAPI 生成器 (https://github.com/OpenAPITools/openapi-generator) 能够根据 Spring 启动数据中的实现在 API 中生成可分页参数。我一直在努力寻找合适的开箱即用解决方案,但找不到。
理想情况下,此 Pageable 参数应按以下方式仅添加到 GET 方法:
default ResponseEntity<User> getUser(@ApiParam(value = "value",required=true) @PathVariable("id") Long id, **Pageable pageable**)
因此,在我的控制器中实现此接口后,我需要重写它并具有前面提到的 Pageable 参数。我不想有单独的大小或页面参数,这里只有这个 Pageable。
感谢任何提示和帮助!
不幸的是,这不是最终解决方案,但已经完成了一半。也许它无论如何都有帮助。
通过将可分页参数(大小、页面等)定义为对象查询参数,可以告诉生成器使用 Spring 对象而不是生成 Pageable
class 来自 api。这是通过导入映射完成的。
在gradle中:
openApiGenerate {
....
importMappings = [
'Pageable': 'org.springframework.data.domain.Pageable'
]
}
告诉生成器使用 Spring class 而不是 api:
中定义的那个
openapi: 3.0.2
info:
title: Spring Page/Pageable API
version: 1.0.0
paths:
/page:
get:
parameters:
- in: query
name: pageable
required: false
schema:
$ref: '#/components/schemas/Pageable'
responses:
...
components:
schemas:
Pageable:
description: minimal Pageable query parameters
type: object
properties:
page:
type: integer
size:
type: integer
映射的问题是生成器仍然添加了一个 @RequestParam()
注释并且 再次破坏了它 。它仅在 NOT 注释时有效。
如果您喜欢冒险,可以尝试 openapi-processor-spring(我是作者)。它确实处理了上面的例子。但它可能有其他您不喜欢的限制。
我希望 OpenAPI 生成器 (https://github.com/OpenAPITools/openapi-generator) 能够根据 Spring 启动数据中的实现在 API 中生成可分页参数。我一直在努力寻找合适的开箱即用解决方案,但找不到。
理想情况下,此 Pageable 参数应按以下方式仅添加到 GET 方法:
default ResponseEntity<User> getUser(@ApiParam(value = "value",required=true) @PathVariable("id") Long id, **Pageable pageable**)
因此,在我的控制器中实现此接口后,我需要重写它并具有前面提到的 Pageable 参数。我不想有单独的大小或页面参数,这里只有这个 Pageable。
感谢任何提示和帮助!
不幸的是,这不是最终解决方案,但已经完成了一半。也许它无论如何都有帮助。
通过将可分页参数(大小、页面等)定义为对象查询参数,可以告诉生成器使用 Spring 对象而不是生成 Pageable
class 来自 api。这是通过导入映射完成的。
在gradle中:
openApiGenerate {
....
importMappings = [
'Pageable': 'org.springframework.data.domain.Pageable'
]
}
告诉生成器使用 Spring class 而不是 api:
中定义的那个openapi: 3.0.2
info:
title: Spring Page/Pageable API
version: 1.0.0
paths:
/page:
get:
parameters:
- in: query
name: pageable
required: false
schema:
$ref: '#/components/schemas/Pageable'
responses:
...
components:
schemas:
Pageable:
description: minimal Pageable query parameters
type: object
properties:
page:
type: integer
size:
type: integer
映射的问题是生成器仍然添加了一个 @RequestParam()
注释并且 再次破坏了它 。它仅在 NOT 注释时有效。
如果您喜欢冒险,可以尝试 openapi-processor-spring(我是作者)。它确实处理了上面的例子。但它可能有其他您不喜欢的限制。