簡體   English   中英

沒有HATEOAS,獲得響應的最佳方法是什么?

[英]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

}

https://www.baeldung.com/spring-hateoas-tutorial

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM