我需要设计REST api,我遇到了将附加服务信息传递给我的DTO的问题。
我喜欢:
public class UserDto implements Serializable {
private Long id;
private String login;
private String firstName;
private String lastName;
private String middleName;
// getters/setters
}
我也有dtos列表的端点。
我需要在每个响应中传递AvailableActions。 这种情况的最佳做法是什么? 用以下内容包装每个结果是否正确:
public class Wrapper<T> {
private T data;
private List<Action> availableActions;
// getters/setters
}
有什么想法吗?任何一个人? 提前谢谢。
答案 0 :(得分:1)
是的,包络是一种广泛使用的技术,如何使用响应发送元数据。例如,JSON API标准使用此方法。
关于你的代码本身。我更喜欢从DTO对象生成API。使用JSON API和Java,我使用Katharsis,我只使用它来指定DTO并以JPA样式注释它并创建用于数据检索的存储库。带链接的包装是自动生成的(以及所有端点 - getOne,getAll ...)。这样我就强制执行API标准用法(JSON API)并摆脱所有LinkWrappers,PaginationMetadataWrappers等......
Twitter使用类似的API构造(附加到响应对象的search_metadata),至少在this example中。