---
# System prepended metadata

title: '`GET` /api/tweets'
tags: [API-doc]

---

# `GET` /api/tweets  
<!-- 一級標題自動成為筆記名稱 -->

## API 功能
取得全站的所有推文。 
* 需註冊才可進入。不分role。
* 回傳全站的所有tweets。
* 資料依照tweet成立時間排序（由新到舊）。  
* 每筆tweet資料中包含
    * tweet的作者資料（id, name, account, avatar）
    * tweet的like數量(likeCount)
    * tweet的reply數量(replyCount)
    * 目前使用者是否like這則推文(isLiked) 

### 邏輯分析(後端看的)
:::spoiler 運作邏輯
1. 找出Tweets中全部資料
2. 照createAt反向排序
3. 查詢關聯資料
4. 整理資料（raw, nest）後回傳json
:::

## 前端傳入資料  
### parameters  
None
### req.body  
None

## 後端回傳資料  
### 成功  
```json
// status code: 200
[
    {
        "id": 43,
        "description": "balabala",
        "createdAt": "2022-07-30T09:39:15.000Z",
        "replyCount": 3,
        "likeCount": 2,
        "User": {
            "id": 6,
            "name": "user5",
            "account": "user5",
            "avatar": "https://avatar-url"
        },
        "isLiked": false
    },
    {
        "id": 49,
        "description": "balabababa",
        "createdAt": "2022-07-29T17:27:20.000Z",
        "replyCount": 3,
        "likeCount": 0,
        "User": {
            "id": 6,
            "name": "user5",
            "account": "user5",
            "avatar": "https://avatar-url"
        },
        "isLiked": false
    },
    // ...more tweets
]
```

### 失敗  
發生原因：使用者token驗證不通過。
```javascript
// status code: 401
{
    "status": "error",
    "message": "Unauthorized. Please login first."
}
```
發生原因：資料庫沒有資料。
```javascript
// status code: 404
{
    "status": "error",
    "message": "Tweet is not found"
}
```


## 相關連結  
* [回首頁](https://hackmd.io/@twitter-2022/index) 
* [API 總表](/Gl56cI2LQ5ObBpmQnbnphw) 

###### tags: `API-doc`