java - REST/Java 的良好实践

标签 java json rest

我目前正在尝试获取 REST 方面的技能,特别是“良好的”REST、超媒体以及随之而来的所有良好实践方面的技能。

为了做到这一点,我被要求开发一个原型(prototype) REST 服务器,其中包含我选择的数据,并实现我在之后的实际项目中必须使用的所有内容。 所以我使用 Spring boot 和 Jackson 制作了一个服务器来进行 json 处理。

我的数据架构与此接近:我有一个 LaunchVehicle 集合(我喜欢 space =D),例如 Ariane V、Falcon 9 等。我可以完美地检索 JSON 对象

{ "name":"Ariane V","country":"Europe","firstFlight":null,"GTO_Payload":1.0,"LEO_Payload":2.3,"weight":136.0 } 

问题是,我想在我的 LaunchVehicle 内添加一个“太空机构”字段,该字段将是一个包含一些字符串和 float 的对象。但是,当客户端检索 LaunchVehicle 时,我不希望它检索完整的 SpaceAgency 对象,而仅检索名称。从这里,他将能够通过收到的响应中包含的超媒体链接来跟踪航天局的链接。

我该怎么做?现在我只能向客户端发送完整的 LaunchVehicle 对象以及 SpaceAgency 对象及其所有字段。是否有任何注释可以实现我想要的功能?谢谢;)

public class LaunchVehicle {


    private String name;
    private String country;
    private Date firstFlight;
    private Map<String, Float> characteristics;
    private SpaceAgency spaceAgency;

    @JsonCreator
    constructor...

    @JsonProperty(required=false)
    getters and setters...

}

非常感谢,如果我不够精确或不够理解,请不要犹豫。

最佳答案

在类级别尝试 @JsonIgnoreProperties 注释。这应该为您提供您想要的功能。

否则,您始终可以使用某种 DTO 对象来创建响应模型,并且只有将在 API 层使用的字段。

我宁愿为 API 层使用适当的 DTO/ApiModel,也不愿使用带有 JSON 注释的完整域对象。

关于java - REST/Java 的良好实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36476063/

相关文章:

java - JerseyTest如何使用SpringBoot的上下文进行测试

java - 无法将附件添加到新 RT 票证中

html - 如何在 angularjs 中为表单字段生成 json 数据

json - 在 json 模式中,描述二进制模式的默认值、示例或枚举值的正确方法是什么?

android - 当我将 "json"作为扩展名传递时,getMimeTypeFromExtension 返回 null

rest - 调用 api 作为应用程序启动的一部分?

java - 用对象填充java数组

java - 评估随机生成的字符串格式的数学方程并得到答案

java - 如何使用 servlet 的 web.xml 查找最后登录 Web 应用程序的用户

java - 如何循环用户输入直到输入整数?