1. 程式人生 > >簡化RESTful開發,Spring Data REST讓你少掉髮

簡化RESTful開發,Spring Data REST讓你少掉髮

# 1 前言 > 歡迎訪問[南瓜慢說 www.pkslow.com](https://www.pkslow.com/)獲取更多精彩文章! # 前言 `Springboot + Spring MVC`大大簡化了`Web`應用的`RESTful`開發,而`Spring Data REST`更簡單。`Spring Data REST`是建立在`Data Repository`之上的,它能直接把`resository`以`HATEOAS`風格暴露成`Web`服務,而不需要再手寫`Controller`層。 > `HATEOAS`,即**Hypermedia as the Engine of Application State** ,它是一種更成熟的`REST`模型,在資源的表達中包含了連結資訊,客戶端可以根據連結來發現可執行的動作。 `Spring Data REST`支援`Spring Data JPA`、`Spring Data MongoDB`、`Spring Data Neo4j`、`Spring Data GenFire`、`Spring Data Cassandra`,這裡選擇大家比較熟悉的`JPA`。 # 2 舉個例子 我們用例子來感受一下吧。 ## 2.1 建立專案 我們通過[Spring Initializr](https://start.spring.io/)來快速建立`Springboot`專案。選中的依賴元件如下: ![](https://img2020.cnblogs.com/other/946674/202008/946674-20200808091215261-766636970.png) - (1)`Spring Web`:提供`Web`服務; - (2)`Rest Repositories`:提供`Spring Data REST`的支援; - (3)`Spring Data JPA`:通過`JPA`提供`Repository`方式的資料訪問; - (4)`H2 Database`:`H2`資料庫,為了方便簡潔,使用該資料庫。 匯入後對應的`pom.xml`中依賴如下: ```xml ``` ## 2.2 實體類 建立一個實體類`User`,如下所示: ```java package com.pkslow.rest.entity; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; private String name; private Integer age; private String email; //getter & setter } ``` ## 2.3 Repository介面定義 定義`Repository`介面用於操作資料庫,如下所示: ```java package com.pkslow.rest.repo; import com.pkslow.rest.entity.User; import org.springframework.data.repository.CrudRepository; import org.springframework.data.rest.core.annotation.RepositoryRestResource; @RepositoryRestResource(path = "user") public interface UserRepository extends CrudRe