Description
Is your feature request related to a problem? Please describe.
starting with spring-boot-3.3.0 / spring-data-commons-3.3.0, you can choose to use PagedModel<T>
(part of spring-data's public api) as (default) response representation of spring-data's Page<T>
interface.
adding @EnableSpringDataWebSupport(pageSerializationMode = EnableSpringDataWebSupport.PageSerializationMode.VIA_DTO)
does not change springdoc's behavior - it still uses the Page
interface to infer the response representation (which kinda makes sense given it is still the controller method return type)..
Describe the solution you'd like
it would be nice if springdoc would support PageSerializationMode.VIA_DTO
, e.g. by making it aware of SpringDataWebSettings.pageSerializationMode
or by some means of configuration.
Describe alternatives you've considered
- works (although not always desirable):
- using
PagedModel
explicitly (i.e. changing controller return type fromPage<T>
toPagedModel<T>
) and returningnew PagedModel<>(myPage)
- using
- does not work:
- adding
@ApiResponse(content = @Content(schema = @Schema(implementation = PagedModel.class)))
- this does not respect generics - i.e. it results in one
PagedModel<?>
schema (content: any[]
) instead of specific representations tied to the contained type like it works forPage<T>
(e.g.Page<Person>
->PagePerson
schema (content: Person[]
))
- this does not respect generics - i.e. it results in one
- using
SpringDocUtils.getConfig().replaceWithClass(Page.class, PagedModel.class)
- this does not respect generics as well - same problem as above
- adding
Additional context
n/a