---
# System prepended metadata

title: JSON-SERVER從0開始

---

# JSON-SERVER從0開始

- 一款npm 套件
- 使用 JSON 檔案模擬資料庫
- 快速建立 RESTful API，幫助前端開發
- 無權限控管功能

## 安裝與設定

:::spoiler 安裝NPM (如果如果安裝過node.js，請略過此步驟)

- npm 的全名是 Node Package Manager
- 安裝Node.js時，會順便安裝NPM
    1. 到node.js官網下載LTS版本 [https://nodejs.org/en/](https://nodejs.org/en/)
    2. 安裝過程一律 `next`直到`finish`
    3. 在終端機(命令提示字元) 輸入 `npm -v` 
    有出現版號就表示成功
    - 如出現提示'環境變數未設定'，請依下圖做設定
        ![環境.png](https://i.imgur.com/a28i64k.png)
        ![環境2.png](https://i.imgur.com/EaIbAAR.png)
        ![環境3.png](https://i.imgur.com/TBaNAIp.png)
:::
### 1. 安裝json-server本體

- 開啟 指令視窗 並輸入`npm install -g json-server`    
    ![](https://i.imgur.com/D3SqaQZ.png)

### 2. 建立 db.json檔案

- 新增 db.json檔案
    :::spoiler db.json 範本
    ```json
        {
            "users": [
                {
                    "id": 1,
                    "name": "Stark",
                    "age": "33"
                },
                {
                    "id": 2,
                    "name": "Happy",
                    "age": "35"
                },
                {
                    "id": 3,
                    "name": "Pepper",
                    "age": "28"
                }
            ],
            "toDo": [
                {
                    "id": 1,
                    "content": "把冰箱發霉的檸檬拿去丟",
                    "isDone": true
                },
                {
                    "id": 2,
                    "content": "打電話叫媽媽匯款給我",
                    "isDone": false
                },
                {
                    "id": 3,
                    "content": "整理電腦資料夾",
                    "isDone": true
                },
                {
                    "id": 4,
                    "content": "繳電費水費瓦斯費",
                    "isDone": false
                },
                {
                    "id": 5,
                    "content": "推廣六角",
                    "isDone": true
                }
            ]
        }
    ```
    :::  

### 3. 啟動 json-server

- `json-server --watch db.json`
- 查看預設網址 [http://localhost:3000/](http://localhost:3000/)
- 想變更預設port ?
`json-server --watch db.json --port 3004`

#### 三步驟，大功告成!


## **RESTful API 使用方式**

推薦可以使用[Postman](https://www.postman.com/)做API測試

### GET：取得資料

- 取得全部users資料 
`http://localhost:3000/users`
- 取得users id=2的資料 
`http://localhost:3000/users/2`
- 取得users name=Happy的資料 
`http://localhost:3000/users?name=Happy`
- 模糊查詢 
`http://localhost:3000/users?name_like=a`
    - 會出現所有name含有a的資料

### DELETE : 刪除

- 刪除單筆資料 (method: DELETE)
`http://localhost:3000/users/5`

### POST ：新增資料

- 每筆資料一定都要有唯一的id，沒給id的話，json-server會自動補上
id重複的話，會回傳500
- Content-Type: application/json
- Method: POST
- url: `http://localhost:3000/users`
- Body:

```json
{
	"id": 4,
	"name": "Peter",
	"age": "30"
}
```

### PUT：修改資料 (完整)

與POST方式相似，會將新資料**完全取代舊資料**，沒寫到的屬性會被刪除

- Content-Type: application/json
- Method: PUT
- url: `http://localhost:3000/users/4`

### PATCH：修改資料 (局部)

與PUT方式相似，**僅更新有變動的部分**，其餘資料不會變

- Content-Type: application/json
- Method: PUT
- url: `http://localhost:3000/users/4`

# 參考文獻

- ****[JSON Server 官方Github](https://github.com/typicode/json-server)****
- [六角學院文件](https://quip.com/C6t2ALm9L6G8) ← **強力推薦**!! 內含影音教學