spring - 有一个包含所有内容的 Rest 存储库 json 和一个排除字段的 json
问题描述
我有两个实体:Book 和 Category 以及两者的存储库。在控制器中,我已经正确设置了方法,如下所示:
@RequestMapping(value="/books", method = RequestMethod.GET)
@CrossOrigin
public @ResponseBody List<Book> bookListRest() {
return (List<Book>) bookRepository.findAll();
}
这显然显示了实体中不是@JsonIgnore 的所有书籍和每个字段。问题是,我需要:
- 一页包含图书数据(书名、作者姓名、isbn..),没有类别
- 一页有类别数据(类别名称),没有书籍
- 包含所有内容的一页(书籍数据及其所属类别)
怎么能做到这一点?在某些情况下,我不知何故需要以某种方式忽略@jsonignore。我是否应该创建一个新实体来扩展问题,并为此创建一个存储库?当然,这不是正确的方法。
解决方案
怎么用DTOs
data transfer objects
您可以创建多个DTOs
以在您的响应中使用它们API
DTO
是一个pojo
class
自定义从您的返回数据entity
public class BookWithoutCategoryDTO {
private String name;
private String authorName;
.....
/// and make setters and getters for them
}
public class BookWithCategoryDTO {
private String name;
private String authorName;
private String category;
.....
/// and make setters and getters for them
}
并创建您的自定义映射器以转换Book
为BookDTO
推荐阅读
- python-3.x - python -count 元素 pandas 数据框
- node.js - 无法使用通过 npm (node js) 安装的 eventbrite javascript sdk
- python - 从另一个更新数据框不起作用
- c# - 当对象在数组中时访问对象属性C#
- python - 如何将行数添加到 QLabel
- ruby-on-rails - NoMethodError:未定义的方法`with_deleted`
- spring - 使用 @JmsListener 时向 MQ 重新传递消息
- java - 如何通过点符号解析 JSON
- xamarin - Admob 横幅广告
- python - 将泡菜对象转换为自定义数据类型