Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在没有HATEOAS的情况下,获得响应的最佳方式是什么?_Java_Spring Data Jpa_Spring Data Rest - Fatal编程技术网

Java 在没有HATEOAS的情况下,获得响应的最佳方式是什么?

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

我尝试通过数据JPA获取实体&没有HATEOAS的数据Rest

条件是我使用HATEOAS表单,有时我需要一个纯Json响应

因此,我创建JSON的方法是分别从存储库的端点创建控制器路径,并分别创建DTO类

这是我的代码:

@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。在本文中,我会问我的代码是否是最好的。