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(我是作者)。它确实处理了上面的例子。但它可能有其他您不喜欢的限制。