Java 在没有HATEOAS的情况下,获得响应的最佳方式是什么?
我尝试通过数据JPA获取实体&没有HATEOAS的数据Rest 条件是我使用HATEOAS表单,有时我需要一个纯Json响应 因此,我创建JSON的方法是分别从存储库的端点创建控制器路径,并分别创建DTO类 这是我的代码:Java 在没有HATEOAS的情况下,获得响应的最佳方式是什么?,java,spring-data-jpa,spring-data-rest,Java,Spring Data Jpa,Spring Data Rest,我尝试通过数据JPA获取实体&没有HATEOAS的数据Rest 条件是我使用HATEOAS表单,有时我需要一个纯Json响应 因此,我创建JSON的方法是分别从存储库的端点创建控制器路径,并分别创建DTO类 这是我的代码: @RepositoryRestController 公共类MetricController{ @自动连线 私人储蓄所; @RequestMapping(method=RequestMethod.GET,value=“/metrics/in/{id}”) 公共@Response
@RepositoryRestController
公共类MetricController{
@自动连线
私人储蓄所;
@RequestMapping(method=RequestMethod.GET,value=“/metrics/in/{id}”)
公共@ResponseBody
MetricDTO getMetric(@PathVariable Long id){
将MetricDTO.fromtentity(metricRepository.getOne(id))返回MetricDTO.fromtentity;
}
}
@存储资源
公共接口MetricRepository扩展了JpaRepository{}
@塞特
@吸气剂
@诺尔格构装师
@AllArgsConstructor
公共类MetricDTO{
私有SourceType SourceType;
私有字符串metricTypeField;
私有字符串metricType;
私有字符串实例类型;
私有字符串instanceTypeField;
私有列表metricIdFields;
私有列表价值域;
私有地图VirtualFieldValueX;
从实体到实体的公共静态度量(公制){
返回新MetricDTO(
metric.getSourceType(),
metric.getMetricTypeField(),
metric.getMetricType(),
metric.getInstanceType(),
metric.getInstanceTypeField(),
metric.getMetricIdFields(),
metric.getValueFields(),
metric.getVirtualFieldValueEx()
);
}
}
我就是这样做的,但我希望会有更好的选择和模式
问题是,我想知道这是否是最好的方法。HATEOAS(作为应用程序状态引擎的超媒体)是REST应用程序体系结构的一个约束。
它基本上告诉您,任何使用REST端点的人都可以在链接的帮助下在它们之间导航
让我们以你为例
**HTTP Method** **Relation (rel)** **Link**
GET Up /metrics/in
GET Self /metrics/in/{id}
GET SourceType /sourceType/{id}
GET metricIdFields /url for each in JSON aarray
Delete Delete /employe/{employeId}
使用org.springframework.hateoas.Links
类在DTO中创建此类链接
在您的DTO中添加
public class MetricDTO {
private Links links;
//Getters and setters
//inside your setters add SLEF , GET , create Delete for current resource
}
如果您正在谈论添加指向DTO的链接,那不是我想要的。在SpringDataREST中,链接是自动附加的,所以我使用DTO来获取不带链接的JSON。不带链接的JSON?那么您将如何实现hateoasis它已经通过使用SDR实现了。正如我所说,当请求访问SDR中的存储库端点时,HATEOAS被附加到响应。如果我有任何误解,请让我知道。很抱歉,你能帮我解决一下你到底在问什么吗?我可能误解了。我想使用SDR让HATEOAS自动包含在实体响应中,在某些情况下没有HATEOAS。因此,我创建了一个独立于存储库端点的控制器,并创建了一个DTO类来将Entitiy转换为DTO,以便在不使用HATEOAS的情况下获得JSON。在本文中,我会问我的代码是否是最好的。