К сожалению, это не окончательное решение, но оно на полпути. Может быть, это все равно поможет.
Определяя параметры для вывода страниц (size, page et c.) В качестве параметра запроса объекта, можно указать генератору использовать объект Spring вместо генерации Pageable
класс от API. Это выполняется с помощью сопоставления импорта.
в gradle:
openApiGenerate {
....
importMappings = [
'Pageable': 'org.springframework.data.domain.Pageable'
]
}
, которое указывает генератору использовать класс Spring вместо класса, определенного в 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()
и что снова нарушает . Это работает, только если оно НЕ аннотировано.
Если вы немного любите приключения, вы можете попробовать openapi-processor-spring (я автор). Это действительно обрабатывает пример выше. Но у него могут быть другие ограничения, которые вам не нравятся.