gpt4 book ai didi

java - 有没有办法减少页面返回的参数数量?

转载 作者:行者123 更新时间:2023-12-01 19:16:00 33 4
gpt4 key购买 nike

我正在使用 Spring 在我的应用程序中实现分页,端点的返回是 Page。这个对象返回很多参数。有没有办法消除其中一些?

存储库扩展了 JpaRepository

服务

@Autowired
ClientRepositoy clientRepositoy;

public List<Client> findAllList() {
return clientRepositoy.findAll();
}

Controller

@Autowired
ServiceClient serviceClient;

@GetMapping("/clients")
public Page<Client> getClients() {
List<Client> clients = serviceClient.findAllList();
return new PageImpl<>(convertToDto(clients), PageRequest.of(0, 10), clients.size());
}

JSON 返回

{
"content": [
{
"id": 1,
"name": "TEST"
}
],
"pageable": {
"sort": {
"sorted": false,
"unsorted": true,
"empty": true
},
"offset": 0,
"pageNumber": 0,
"pageSize": 10,
"paged": true,
"unpaged": false
},
"totalPages": 1,
"totalElements": 7,
"last": true,
"size": 10,
"number": 0,
"sort": {
"sorted": false,
"unsorted": true,
"empty": true
},
"first": true,
"numberOfElements": 7,
"empty": false
}

我想删除整个 Pageable 对象,例如:

"pageable": {
"sort": {
"sorted": false,
"unsorted": true,
"empty": true
},
"offset": 0,
"pageNumber": 0,
"pageSize": 10,
"paged": true,
"unpaged": false
},

最佳答案

因此我们在响应中使用了一个无法修改的类

我们可以使用 mixin。

如果您创建了 ObjectMapper bean,则可以指定您的 mixin,它将在序列化期间使用。

它看起来像下面的代码。

设置 getter 可见性的 mixin。它将在序列化期间使用:

public interface PageImplMixin {
@JsonIgnore
Pageable getPageable();
}

自己的对象映射器 bean,配置为在 pageimpl 类被序列化时使用我们的 mixin:

@Configuration
public class JacksonConfig {
@Bean
public ObjectMapper objectMapper() {
return new ObjectMapper().setMixIns(Map.of(PageImpl.class, PageImplMixin.class));
}
}

一些理解这个概念的链接:

JacksonMixInAnnotations Mix-In Annotations to reuse, decouple

关于java - 有没有办法减少页面返回的参数数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59416380/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com