我目前正在尝试获取 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/