簡化RESTful開發,Spring Data REST讓你少掉髮
阿新 • • 發佈:2020-08-08
# 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