在 dto 中传递服务信息

Pass service information within dto

我需要设计 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
}

我还有带有 dto 列表的端点。

我需要为每个响应传递 AvailableActions。 这种情况的最佳做法是什么? 用类似的东西包装每个结果是否正确:

public class Wrapper<T> {

    private T data;
    private List<Action> availableActions;

    // getters/setters
}

有什么想法吗?有什么想法吗? 提前致谢。

是的,包络是一种广泛使用的技术,如何在响应中发送元数据。例如 JSON API 标准使用这种方法。

关于您的代码本身。我更喜欢从 DTO 对象生成 API。对于 JSON API 和 Java 我使用 Katharsis,我只是指定 DTO 并以 JPA 样式对其进行注释 + 创建存储库以进行数据检索。带有链接的包装是自动生成的(以及所有端点 - getOne,getAll ...)。这样我就强制执行 API 标准用法 (JSON API) 并摆脱所有 LinkWrappers、PaginationMetadataWrappers 等...


Twitter 使用类似的 API 构造(search_metadata 附加到响应对象),至少在 this example.