[英]What is the best way to get response without HATEOAS?
我嘗試通過Data JPA和Data Rest獲取實體而不使用HATEOAS。
條件是我使用HATEOAS表單,有時我需要一個純Json響應。
所以我通過分別從存儲庫的端點創建控制器路徑並分別創建DTO類來創建JSON。
這是我的代碼:
@RepositoryRestController
public class MetricController {
@Autowired
private MetricRepository metricRepository;
@RequestMapping(method = RequestMethod.GET, value = "/metrics/in/{id}")
public @ResponseBody
MetricDTO getMetric(@PathVariable Long id) {
return MetricDTO.fromEntity(metricRepository.getOne(id));
}
}
@RepositoryRestResource
public interface MetricRepository extends JpaRepository<Metric, Long> { }
@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class MetricDTO {
private SourceType sourceType;
private String metricTypeField;
private String metricType;
private String instanceType;
private String instanceTypeField;
private List<String> metricIdFields;
private List<String> valueFields;
private Map<String, String> virtualFieldValueEx;
public static MetricDTO fromEntity(Metric metric) {
return new 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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.